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))
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)
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
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
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'))
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)
def query(self, req) -> ResponseQuery: return ResponseQuery(code=CodeTypeOk, value='0', height=self.last_block_height)
def query(self, reqQuery): """Return the last tx count""" rq = ResponseQuery(code=0, key=b'fullstate', value=hexlify(pickle.dump(self.stats()))) return rq
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)
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)