Implement looking up transactions
This commit is contained in:
parent
a584154c2f
commit
04c20b6b69
|
@ -15,6 +15,16 @@ from revolut import Revolut
|
||||||
from transactions import Transactions
|
from transactions import Transactions
|
||||||
|
|
||||||
|
|
||||||
|
def convert(data):
|
||||||
|
if isinstance(data, bytes):
|
||||||
|
return data.decode("ascii")
|
||||||
|
if isinstance(data, dict):
|
||||||
|
return dict(map(convert, data.items()))
|
||||||
|
if isinstance(data, tuple):
|
||||||
|
return map(convert, data)
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class WebApp(object):
|
class WebApp(object):
|
||||||
"""
|
"""
|
||||||
Our Klein webapp.
|
Our Klein webapp.
|
||||||
|
@ -35,10 +45,24 @@ class WebApp(object):
|
||||||
except JSONDecodeError:
|
except JSONDecodeError:
|
||||||
self.log.error("Failed to parse JSON callback: {content}", content=content)
|
self.log.error("Failed to parse JSON callback: {content}", content=content)
|
||||||
return dumps({"success": False})
|
return dumps({"success": False})
|
||||||
self.log.info("Callback received: {parsed}", parsed=parsed)
|
self.log.info("Callback received: {parsed}", parsed=parsed["data"]["id"])
|
||||||
self.tx.transaction(parsed)
|
self.tx.transaction(parsed)
|
||||||
return dumps({"success": True})
|
return dumps({"success": True})
|
||||||
|
|
||||||
|
@app.route("/find/<string:reference>/<string:amount>")
|
||||||
|
def find(self, request, reference, amount):
|
||||||
|
try:
|
||||||
|
int(amount)
|
||||||
|
except ValueError:
|
||||||
|
return dumps({"success": False, "msg": "Amount is not an integer"})
|
||||||
|
rtrn = self.tx.find_tx(reference, amount)
|
||||||
|
if rtrn == "AMOUNT_INVALID":
|
||||||
|
return dumps({"success": False, "msg": "Reference found but amount invalid"})
|
||||||
|
elif not rtrn:
|
||||||
|
return dumps({"success": False, "msg": "Reference not found"})
|
||||||
|
else:
|
||||||
|
return dumps(convert(rtrn))
|
||||||
|
|
||||||
|
|
||||||
def start(handler):
|
def start(handler):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -55,5 +55,16 @@ class Transactions(object):
|
||||||
self.log.info("Transaction processed: {formatted}", formatted=dumps(to_store, indent=2))
|
self.log.info("Transaction processed: {formatted}", formatted=dumps(to_store, indent=2))
|
||||||
r.hmset(f"tx.{txid}", to_store)
|
r.hmset(f"tx.{txid}", to_store)
|
||||||
|
|
||||||
def find_tx(self, amount, reference):
|
def find_tx(self, reference, amount):
|
||||||
pass
|
all_transactions = r.scan(0, match="tx.*")
|
||||||
|
print(f"ALL {all_transactions}")
|
||||||
|
for tx_iter in all_transactions[1]:
|
||||||
|
tx_obj = r.hgetall(tx_iter)
|
||||||
|
print(f"ITER {tx_iter}")
|
||||||
|
print(f"OBJ {tx_obj}")
|
||||||
|
if tx_obj[b"reference"] == str.encode(reference):
|
||||||
|
if tx_obj[b"amount"] == str.encode(amount):
|
||||||
|
return tx_obj
|
||||||
|
else:
|
||||||
|
return "AMOUNT_INVALID"
|
||||||
|
return False
|
||||||
|
|
Loading…
Reference in New Issue