Strip out API parts and pass through objects smarter

pull/1/head
Mark Veidemanis 3 years ago
parent 83090ff6a5
commit b880e9763f
Signed by: m
GPG Key ID: 5ACFCEED46C0904F

@ -34,18 +34,9 @@ class WebApp(object):
app = Klein() app = Klein()
def __init__(self, agora, irc): def __init__(self):
self.revolut = Revolut(irc) # Initialise Revolut client and pass IRC
self.agora = agora
self.tx = Transactions(agora, irc) # Initialise Transactions client and pass Agora and IRC
self.log = Logger("webapp") self.log = Logger("webapp")
@app.route("/newkey")
def newkey(self, request):
self.revolut.create_new_jwt()
self.revolut.get_access_token()
return dumps(True)
@app.route("/callback", methods=["POST"]) @app.route("/callback", methods=["POST"])
def callback(self, request): def callback(self, request):
content = request.content.read() content = request.content.read()
@ -58,63 +49,42 @@ class WebApp(object):
self.tx.transaction(parsed) self.tx.transaction(parsed)
return dumps(True) return dumps(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))
@app.route("/trades") if __name__ == "__main__":
def trades(self, request): # Define IRC and Agora
trade_list = self.agora.dashboard() irc = bot()
return dumps(trade_list) agora = Agora()
@app.route("/messages/<string:contact_id>")
def messages(self, request, contact_id):
message_list = self.agora.get_messages(contact_id)
return dumps(message_list)
@app.route("/dist") # Pass IRC to Agora and Agora to IRC
def dist_countries(self, request): # This is to prevent recursive dependencies
rtrn = self.agora.dist_countries() agora.set_irc(irc)
return dumps(rtrn) irc.set_agora(agora)
@app.route("/ads") # Define Revolut
def ads(self, request): revolut = Revolut()
rtrn = self.agora.get_ads() # Pass IRC to Revolut
return dumps(rtrn) revolut.set_irc(irc)
@app.route("/create/<string:countrycode>/<string:currency>") # Define Transactions
def create(self, request, countrycode, currency): tx = Transactions()
rtrn = self.agora.create_ad(countrycode, currency)
return dumps(rtrn)
# Pass Agora and IRC to Transactions
tx.set_agora(agora)
tx.set_irc(irc)
def start(handler, refresh_sec): # Define WebApp
""" webapp = WebApp()
Schedule to refresh the API token once the reactor starts, and create LoopingCapp to refresh it periodically. # Handle setting up JWT and request_token from an auth code
"""
if settings.Revolut.SetupToken == "1": if settings.Revolut.SetupToken == "1":
deferLater(reactor, 1, handler.setup_auth) deferLater(reactor, 1, revolut.setup_auth)
else: else:
deferLater(reactor, 1, handler.get_new_token, True) # Schedule refreshing the access token using the refresh token
deferLater(reactor, 4, handler.setup_webhook) deferLater(reactor, 1, revolut.get_new_token, True)
lc = LoopingCall(handler.get_new_token) # Check if the webhook is set up and set up if not
lc.start(refresh_sec) deferLater(reactor, 4, revolut.setup_webhook)
# Schedule repeatedly refreshing the access token
lc = LoopingCall(revolut.get_new_token)
if __name__ == "__main__": lc.start(int(settings.Revolut.RefreshSec))
irc = bot() # Initialise IRC client
agora = Agora(irc) # Initialise Agora client and pass IRC # Run the WebApp
irc.set_agora(agora)
webapp = WebApp(agora, irc) # Initialise API and pass agora and IRC
start(webapp.revolut, int(settings.Revolut.RefreshSec))
webapp.app.run("127.0.0.1", 8080) webapp.app.run("127.0.0.1", 8080)

Loading…
Cancel
Save