URI: 
       tparse_servers method - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 1d26676ee9afd5f6d83a5b52cb9cf5e820a241b9
   DIR parent 215f64e64dad5798edb54e3c0bcba4cfd200a7a8
  HTML Author: thomasv <thomasv@gitorious>
       Date:   Wed, 14 Aug 2013 16:16:03 +0200
       
       parse_servers method
       
       Diffstat:
         M lib/interface.py                    |      62 ++++++++++++++++---------------
       
       1 file changed, 33 insertions(+), 29 deletions(-)
       ---
   DIR diff --git a/lib/interface.py b/lib/interface.py
       t@@ -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
       t@@ -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: