Example #1
0
    def from_address(cls, currency, address, port):
        """
        Factory method to get a node from a given address

        :param str currency: The node currency. None if we don't know\
         the currency it should have, for example if its the first one we add
        :param str address: The node address
        :param int port: The node port
        :return: A new node
        :rtype: sakia.core.net.Node
        """
        peer_data = yield from bma.network.Peering(ConnectionHandler(address, port)).get()

        peer = Peer.from_signed_raw("{0}{1}\n".format(peer_data['raw'],
                                                  peer_data['signature']))

        if currency is not None:
            if peer.currency != currency:
                raise InvalidNodeCurrency(peer.currency, currency)

        node = cls(peer.currency,
                   [Endpoint.from_inline(e.inline()) for e in peer.endpoints],
                   "", peer.pubkey, None, Node.ONLINE, time.time(),
                   {'root': "", 'leaves': []}, "", "", 0)
        logging.debug("Node from address : {:}".format(str(node)))
        return node
Example #2
0
    def from_json(cls, currency, data):
        endpoints = []
        uid = ""
        pubkey = ""
        software = ""
        version = ""
        fork_window = 0
        block = None
        last_change = time.time()
        state = Node.OFFLINE
        logging.debug(data)
        for endpoint_data in data['endpoints']:
            endpoints.append(Endpoint.from_inline(endpoint_data))

        if currency in data:
            currency = data['currency']

        if 'uid' in data:
            uid = data['uid']

        if 'pubkey' in data:
            pubkey = data['pubkey']

        if 'last_change' in data:
            last_change = data['last_change']

        if 'block' in data:
            block = data['block']

        if 'state' in data:
            state = data['state']

        if 'software' in data:
            software = data['software']

        if 'version' in data:
            version = data['version']

        if 'fork_window' in data:
            fork_window = data['fork_window']

        node = cls(currency, endpoints,
                   uid, pubkey, block,
                   state, last_change,
                   {'root': "", 'leaves': []},
                   software, version, fork_window)
        logging.debug("Node from json : {:}".format(str(node)))
        return node
Example #3
0
    def from_json(cls, currency, data):
        endpoints = []
        uid = ""
        pubkey = ""
        block = 0
        last_change = time.time()
        state = Node.ONLINE
        software = ''
        version = ''
        logging.debug(data)
        for endpoint_data in data['endpoints']:
            endpoints.append(Endpoint.from_inline(endpoint_data))

        if currency in data:
            currency = data['currency']

        if 'uid' in data:
            uid = data['uid']

        if 'pubkey' in data:
            pubkey = data['pubkey']

        if 'last_change' in data:
            last_change = data['last_change']

        if 'block' in data:
            block = data['block']

        if 'state' in data:
            state = data['state']
        else:
            logging.debug("Error : no state in node")

        if 'software' in data:
            software = data['software']
        else:
            logging.debug("Error : no software in node")

        if 'version' in data:
            version = data['version']
        else:
            logging.debug("Error : no version in node")

        node = cls(currency, endpoints, uid, pubkey, block,
                   state, last_change, software, version)
        logging.debug("Node from json : {:}".format(str(node)))
        return node
Example #4
0
    def from_json(cls, currency, data):
        endpoints = []
        uid = ""
        pubkey = ""
        block = 0
        last_change = time.time()
        state = Node.ONLINE
        software = ''
        version = ''
        logging.debug(data)
        for endpoint_data in data['endpoints']:
            endpoints.append(Endpoint.from_inline(endpoint_data))

        if currency in data:
            currency = data['currency']

        if 'uid' in data:
            uid = data['uid']

        if 'pubkey' in data:
            pubkey = data['pubkey']

        if 'last_change' in data:
            last_change = data['last_change']

        if 'block' in data:
            block = data['block']

        if 'state' in data:
            state = data['state']
        else:
            logging.debug("Error : no state in node")

        if 'software' in data:
            software = data['software']
        else:
            logging.debug("Error : no software in node")

        if 'version' in data:
            version = data['version']
        else:
            logging.debug("Error : no version in node")

        node = cls(currency, endpoints, uid, pubkey, block, state, last_change,
                   software, version)
        logging.debug("Node from json : {:}".format(str(node)))
        return node
Example #5
0
File: node.py Project: c-geek/sakia
    def from_json(cls, currency, data, file_version):
        """
        Loads a node from json data

        :param str currency: the currency of the community
        :param dict data: the json data of the node
        :param NormalizedVersion file_version: the version of the file
        :return: A new node
        :rtype: Node
        """
        endpoints = []
        uid = ""
        pubkey = ""
        software = ""
        version = ""
        fork_window = 0
        block = None
        last_change = time.time()
        state = Node.OFFLINE
        if 'uid' in data:
            uid = data['uid']

        if 'pubkey' in data:
            pubkey = data['pubkey']

        if 'last_change' in data:
            last_change = data['last_change']

        if 'block' in data:
            block = data['block']

        if 'state' in data:
            state = data['state']

        if 'software' in data:
            software = data['software']

        if 'version' in data:
            version = data['version']

        if 'fork_window' in data:
            fork_window = data['fork_window']

        if parse_version("0.11") <= file_version < parse_version("0.12dev1") :
            for endpoint_data in data['endpoints']:
                endpoints.append(Endpoint.from_inline(endpoint_data))

            if currency in data:
                currency = data['currency']

            peer = Peer("1", currency, pubkey, BlockId(0, Block.Empty_Hash), endpoints, "SOMEFAKESIGNATURE")
        else:
            peer = Peer.from_signed_raw(data['peer'])

        node = cls(peer, uid, pubkey, block,
                   state, last_change,
                   {'root': "", 'leaves': []},
                   software, version, fork_window)

        logging.debug("Node from json : {:}".format(str(node)))
        return node