def make_node(cls, data):
try:
key = data['key']
except KeyError:
key, kwargs = u'/', {}
else:
kwargs = {'modified_index': int(data['modifiedIndex']),
'created_index': int(data['createdIndex'])}
ttl = data.get('ttl')
if ttl is not None:
expiration = iso8601.parse_date(data['expiration'])
kwargs.update(ttl=ttl, expiration=expiration)
if 'value' in data:
node_cls = Value
args = (data['value'],)
elif data.get('dir', False):
node_cls = Directory
args = ([cls.make_node(n) for n in data.get('nodes', ())],)
else:
node_cls, args = Node, ()
return node_cls(key, *args, **kwargs)
评论列表
文章目录