def post_transaction(self, json): t = Transaction.fromJson(json) if t is None: debug('JSON error') self.no_response(400) # Bad Request elif not t.is_valid(self.server.blockchain): debug('invalid blockchain transaction') self.no_response(400) # Bad Request else: self.server.transactions.append(t) self.no_response(200) # OK self.broadcast_transaction(t)
def fromJson(json_data): try: data = json.loads(json_data) b = Block(data["previous_hash"], data["miner_address"]) ts = [] for t in data["transactions"]: ts.append(Transaction.fromJson(t)) b.set_transactions(ts) b.set_proof(data["proof"]) return b # JSON ValueError for decode # KeyError if no accessed key except (ValueError, KeyError, TypeError): return None
def get_transactions(self): """send GET request to relay/transactions/ and parse it """ r = get_request(self.url+'transactions/') if r is None: return None if not r.status_code == 200: return None try: json_ts = r.json() except ValueError: return None ts = [] for json in json_ts: t = Transaction.fromJson(json) if not t is None: ts.append(t) return ts