Handle Agora library exceptions properly
This commit is contained in:
parent
965bba8d15
commit
72afa1b25b
|
@ -15,6 +15,20 @@ from datetime import datetime
|
||||||
from settings import settings
|
from settings import settings
|
||||||
|
|
||||||
|
|
||||||
|
def handle_exceptions(func):
|
||||||
|
def inner_function(*args, **kwargs):
|
||||||
|
try:
|
||||||
|
rtrn = func(*args, **kwargs)
|
||||||
|
except (ReadTimeout, ReadError):
|
||||||
|
return False
|
||||||
|
if "success" in rtrn:
|
||||||
|
if "message" in rtrn:
|
||||||
|
if not rtrn["success"] and rtrn["message"] == "API ERROR":
|
||||||
|
return False
|
||||||
|
|
||||||
|
return inner_function
|
||||||
|
|
||||||
|
|
||||||
class Agora(object):
|
class Agora(object):
|
||||||
"""
|
"""
|
||||||
AgoraDesk API handler.
|
AgoraDesk API handler.
|
||||||
|
@ -52,11 +66,9 @@ class Agora(object):
|
||||||
self.lc_cheat = LoopingCall(self._update_prices)
|
self.lc_cheat = LoopingCall(self._update_prices)
|
||||||
self.lc_cheat.start(int(settings.Agora.CheatSec))
|
self.lc_cheat.start(int(settings.Agora.CheatSec))
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def wrap_dashboard(self):
|
def wrap_dashboard(self):
|
||||||
try:
|
dash = self.agora.dashboard_seller()
|
||||||
dash = self.agora.dashboard_seller()
|
|
||||||
except ReadTimeout:
|
|
||||||
return False
|
|
||||||
if not dash:
|
if not dash:
|
||||||
return False
|
return False
|
||||||
dash_tmp = {}
|
dash_tmp = {}
|
||||||
|
@ -79,10 +91,7 @@ class Agora(object):
|
||||||
self.dashboard_hook(dash_tmp)
|
self.dashboard_hook(dash_tmp)
|
||||||
|
|
||||||
# Get recent messages
|
# Get recent messages
|
||||||
try:
|
self.get_recent_messages()
|
||||||
self.get_recent_messages()
|
|
||||||
except ReadTimeout:
|
|
||||||
pass
|
|
||||||
return dash_tmp
|
return dash_tmp
|
||||||
|
|
||||||
def get_dashboard(self):
|
def get_dashboard(self):
|
||||||
|
@ -150,6 +159,7 @@ class Agora(object):
|
||||||
current_trades.append(reference)
|
current_trades.append(reference)
|
||||||
self.tx.cleanup(current_trades)
|
self.tx.cleanup(current_trades)
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def dashboard_release_urls(self):
|
def dashboard_release_urls(self):
|
||||||
"""
|
"""
|
||||||
Get information about our open trades.
|
Get information about our open trades.
|
||||||
|
@ -183,15 +193,13 @@ class Agora(object):
|
||||||
|
|
||||||
return dash_tmp
|
return dash_tmp
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def get_recent_messages(self, send_irc=True):
|
def get_recent_messages(self, send_irc=True):
|
||||||
"""
|
"""
|
||||||
Get recent messages.
|
Get recent messages.
|
||||||
"""
|
"""
|
||||||
messages_tmp = {}
|
messages_tmp = {}
|
||||||
try:
|
messages = self.agora.recent_messages()
|
||||||
messages = self.agora.recent_messages()
|
|
||||||
except ReadError:
|
|
||||||
return False
|
|
||||||
if not messages["success"]:
|
if not messages["success"]:
|
||||||
return False
|
return False
|
||||||
if "data" not in messages["response"]:
|
if "data" not in messages["response"]:
|
||||||
|
@ -230,6 +238,7 @@ class Agora(object):
|
||||||
|
|
||||||
return messages_tmp
|
return messages_tmp
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def enum_ad_ids(self, page=0):
|
def enum_ad_ids(self, page=0):
|
||||||
ads = self.agora._api_call(api_method="ads", query_values={"page": page})
|
ads = self.agora._api_call(api_method="ads", query_values={"page": page})
|
||||||
ads_total = []
|
ads_total = []
|
||||||
|
@ -244,6 +253,7 @@ class Agora(object):
|
||||||
ads_total.append(ad)
|
ads_total.append(ad)
|
||||||
return ads_total
|
return ads_total
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def enum_ads(self, page=0):
|
def enum_ads(self, page=0):
|
||||||
ads = self.agora._api_call(api_method="ads", query_values={"page": page})
|
ads = self.agora._api_call(api_method="ads", query_values={"page": page})
|
||||||
ads_total = []
|
ads_total = []
|
||||||
|
@ -272,6 +282,7 @@ class Agora(object):
|
||||||
self.log.debug("Seconds ago date for {date} ^ {now}: {x}", date=date, now=str(now), x=sec_ago_date)
|
self.log.debug("Seconds ago date for {date} ^ {now}: {x}", date=date, now=str(now), x=sec_ago_date)
|
||||||
return sec_ago_date < 172800
|
return sec_ago_date < 172800
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def enum_public_ads(self, coin, currency, page=0):
|
def enum_public_ads(self, coin, currency, page=0):
|
||||||
# buy-monero-online, buy-bitcoin-online
|
# buy-monero-online, buy-bitcoin-online
|
||||||
# Work around Agora weirdness calling it bitcoins
|
# Work around Agora weirdness calling it bitcoins
|
||||||
|
@ -319,6 +330,7 @@ class Agora(object):
|
||||||
"""
|
"""
|
||||||
deferToThread(self.update_prices, xmr, btc)
|
deferToThread(self.update_prices, xmr, btc)
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def update_prices(self, xmr=True, btc=True):
|
def update_prices(self, xmr=True, btc=True):
|
||||||
our_ads = self.enum_ads()
|
our_ads = self.enum_ads()
|
||||||
currencies = [x[3].lower() for x in our_ads]
|
currencies = [x[3].lower() for x in our_ads]
|
||||||
|
@ -443,6 +455,7 @@ class Agora(object):
|
||||||
self.log.debug("Cheapest ad above our min that is not us: {x}", x=cheapest_ad)
|
self.log.debug("Cheapest ad above our min that is not us: {x}", x=cheapest_ad)
|
||||||
return cheapest_ad[3] - 0.001
|
return cheapest_ad[3] - 0.001
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def nuke_ads(self):
|
def nuke_ads(self):
|
||||||
"""
|
"""
|
||||||
Delete all of our adverts.
|
Delete all of our adverts.
|
||||||
|
@ -487,6 +500,7 @@ class Agora(object):
|
||||||
max_local = max_usd * rates[currency]
|
max_local = max_usd * rates[currency]
|
||||||
return (min_local, max_local)
|
return (min_local, max_local)
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def create_ad(self, asset, countrycode, currency):
|
def create_ad(self, asset, countrycode, currency):
|
||||||
"""
|
"""
|
||||||
Post an ad with the given asset in a country with a given currency.
|
Post an ad with the given asset in a country with a given currency.
|
||||||
|
@ -610,6 +624,7 @@ class Agora(object):
|
||||||
# yield False
|
# yield False
|
||||||
# yield rtrn
|
# yield rtrn
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def strip_duplicate_ads(self):
|
def strip_duplicate_ads(self):
|
||||||
"""
|
"""
|
||||||
Remove duplicate ads.
|
Remove duplicate ads.
|
||||||
|
@ -631,6 +646,7 @@ class Agora(object):
|
||||||
actioned.append(rtrn["success"])
|
actioned.append(rtrn["success"])
|
||||||
return all(actioned)
|
return all(actioned)
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def release_funds(self, contact_id):
|
def release_funds(self, contact_id):
|
||||||
"""
|
"""
|
||||||
Release funds for a contact_id.
|
Release funds for a contact_id.
|
||||||
|
@ -647,6 +663,7 @@ class Agora(object):
|
||||||
|
|
||||||
return rtrn
|
return rtrn
|
||||||
|
|
||||||
|
@handle_exceptions
|
||||||
def withdraw_funds(self):
|
def withdraw_funds(self):
|
||||||
"""
|
"""
|
||||||
Withdraw excess funds to our XMR/BTC wallets.
|
Withdraw excess funds to our XMR/BTC wallets.
|
||||||
|
|
Loading…
Reference in New Issue