Exemplo n.º 1
0
    def query(self, req):
        path = str_to_bytes(req.query.path)
        key = req.query.data

        if not path:
            self.log.error("Missing path value")
            return ResponseQuery(code=InternalError,
                                 value=b'missing path value')
        if not key:
            self.log.error("Missing key value")
            return ResponseQuery(code=InternalError,
                                 value=b'missing key value')

        # Format ints to big_endianss
        def format_if_needed(value):
            if isinstance(value, int):
                return int_to_big_endian(value)
            else:
                return value

        # built in call for creating Txs
        if path == b'/tx_nonce':
            # Query account in the unconfirmed cache
            acct = self._storage.unconfirmed.get_account(key)
            return ResponseQuery(code=OK, value=format_if_needed(acct.nonce))

        # Try the handler(s)
        if path in self._query_handlers:
            bits = self._query_handlers[path](key, self._storage.confirmed)
            return ResponseQuery(code=OK, value=format_if_needed(bits))

        errmsg = "No handler found for {}".format(path)
        return ResponseQuery(code=InternalError, value=str_to_bytes(errmsg))
Exemplo n.º 2
0
 def query(self, req):
     if req.prove:
         value = self.state.db.get(prefix_key(req.data))
         # todo: make Proof return index
         return ResponseQuery(code=CodeTypeOk, value=value)
     else:
         value = self.state.db.get(prefix_key(req.data))
         return ResponseQuery(code=CodeTypeOk, value=value)
Exemplo n.º 3
0
 def query(self, reqQuery):
     """Return the last tx count"""
     v = encode_number(self.txCount)
     rq = ResponseQuery(code=0,
                        key=b'count',
                        value=v,
                        height=self.last_block_height)
     return rq
Exemplo n.º 4
0
    def query(self, reqQuery):
        """Return the last tx count"""

        if reqQuery.path == 'balance':
            address = reqQuery.data.decode('utf-8')
            address_balance = self.db.get_address_info(address)['balance']

            rq = ResponseQuery(code=CodeTypeOk,
                               key=b'balance',
                               value=utils.encode_number(int(address_balance)))

            return rq
Exemplo n.º 5
0
 def query(self, req):
     output = dict()
     param = req.data.split(b',')
     varId = param[0].split(b':')[1]
     varSpk = param[1].split(b':')[1]
     varRpk = param[2].split(b':')[1]
     srchStr = "id:" + varId.decode('ascii') + ","
     srchStr = srchStr + "senderpk:" + (varSpk.decode('ascii'),
                                        ".*")[varSpk == b''] + ","
     srchStr = srchStr + "receiverpk:" + (varRpk.decode('ascii'),
                                          ".*")[varRpk == b'']
     for key, val in self.state.db.snapshot().items():
         x = re.search(srchStr, key.decode('ascii'))
         if not x is None:
             value = self.state.db.get(key)
             output[key] = value
     return ResponseQuery(code=CodeTypeOk,
                          value=str(output).encode('ascii'))
Exemplo n.º 6
0
 def query(self, req) -> ResponseQuery:
     """Return the last tx count"""
     v = encode_number(self.txCount)
     return ResponseQuery(code=CodeTypeOk,
                          value=v,
                          height=self.last_block_height)
Exemplo n.º 7
0
 def query(self, req) -> ResponseQuery:
     return ResponseQuery(code=CodeTypeOk, value='0', height=self.last_block_height)
Exemplo n.º 8
0
    def query(self, reqQuery):
        """Return the last tx count"""
        rq = ResponseQuery(code=0, key=b'fullstate', value=hexlify(pickle.dump(self.stats())))

        return rq
Exemplo n.º 9
0
 def query(self, req) -> ResponseQuery:
     message = sign_message(RawMessage(self.public_key, self.state, self.sequence), self.private_key)
     res = encode_for_wire(message)
     self.sequence += 1
     return ResponseQuery(code=CodeTypeOk, value=res, height=self.state.last_block_height)
Exemplo n.º 10
0
Arquivo: core.py Projeto: todun/vimana
 def query(self, req):
     # TODO is not fully implemented!
     key = self.state.get_transaction_hash(req.data)
     value = self.state.db.get(prefix_key(key))
     logger.info("key %s returned %s", key, value)
     return ResponseQuery(code=CodeTypeOk, value=value)