# Twisted/Klein imports from twisted.logger import Logger # Other library imports from json import loads from simplejson.errors import JSONDecodeError from forex_python.converter import CurrencyRates from agoradesk_py.agoradesk import AgoraDesk # Project imports from settings import settings class Agora(object): """ AgoraDesk API handler. """ def __init__(self, irc): self.log = Logger("agora") self.agora = AgoraDesk(settings.Agora.Token) self.cr = CurrencyRates() self.irc = irc def try_json(self, data): try: parsed = data.json() return parsed except JSONDecodeError: self.log.error("Cannot parse {content}", content=data.content) return str(data.content) def dashboard(self): dash = self.agora.dashboard_seller() return dash def get_messages(self, contact_id): messages = self.agora.contact_messages(contact_id) return messages def get_ads(self): ads = self.agora.ads() return ads def get_rates_all(self): rates = self.cr.get_rates("USD") return rates def create_ad(self, countrycode, currency): rates = self.get_rates_all() min_amount = rates[currency] * float(settings.Agora.MinUSD) max_amount = rates[currency] * float(settings.Agora.MaxUSD) price_formula = f"coingeckoxmrusd{currency.lower()}*{settings.Agora.Margin}" # price_formula = f"coingeckoxmrusd*{settings.Agora.Margin}" print("formula", price_formula) ad = self.agora.ad_create( country_code=countrycode, currency=currency, trade_type="ONLINE_SELL", asset="XMR", price_equation=price_formula, track_max_amount=False, require_trusted_by_advertiser=False, # verified_email_required = False, online_provider="REVOLUT", msg=settings.Agora.Ad, min_amount=min_amount, max_amount=max_amount, payment_method_details=settings.Agora.PaymentMethodDetails, # require_feedback_score = 0, account_info=settings.Agora.PaymentDetails, ) return ad def dist_countries(self): for currency, countrycode in loads(settings.Agora.DistList): rtrn = self.create_ad(countrycode, currency) if not rtrn: return False return True