parse_servers method

This commit is contained in:
thomasv 2013-08-14 16:16:03 +02:00
parent 215f64e64d
commit 1d26676ee9
1 changed files with 33 additions and 29 deletions

View File

@ -93,6 +93,38 @@ class Interface(threading.Thread):
self.pending_transactions_for_notifications= []
def parse_servers(self, result):
""" parse servers list into dict format"""
servers = {}
for item in result:
host = item[1]
out = {}
version = None
pruning_level = '-'
if len(item) > 2:
for v in item[2]:
if re.match("[stgh]\d*", v):
protocol, port = v[0], v[1:]
if port == '': port = DEFAULT_PORTS[protocol]
out[protocol] = port
elif re.match("v(.?)+", v):
version = v[1:]
elif re.match("p\d*", v):
pruning_level = v[1:]
if pruning_level == '': pruning_level = '0'
try:
is_recent = float(version)>=float(PROTOCOL_VERSION)
except:
is_recent = False
if out and is_recent:
out['pruning'] = pruning_level
servers[host] = out
return servers
def queue_json_response(self, c):
# uncomment to debug
@ -124,35 +156,7 @@ class Interface(threading.Thread):
self.trigger_callback('banner')
elif method == 'server.peers.subscribe':
servers = {}
for item in result:
host = item[1]
out = {}
version = None
pruning_level = '-'
if len(item) > 2:
for v in item[2]:
if re.match("[stgh]\d*", v):
protocol, port = v[0], v[1:]
if port == '': port = DEFAULT_PORTS[protocol]
out[protocol] = port
elif re.match("v(.?)+", v):
version = v[1:]
elif re.match("p\d*", v):
pruning_level = v[1:]
if pruning_level == '': pruning_level = '0'
try:
is_recent = float(version)>=float(PROTOCOL_VERSION)
except:
is_recent = False
if out and is_recent:
out['pruning'] = pruning_level
servers[host] = out
self.servers = servers
self.servers = self.parse_servers(result)
self.trigger_callback('peers')
else: