# Twisted/Klein imports from twisted.logger import Logger # Other library imports import requests from json import loads from forex_python.converter import CurrencyRates # Project imports from settings import settings class Agora(object): """ AgoraDesk API handler. """ def __init__(self): self.log = Logger("agora") self.cr = CurrencyRates() def get_active_trades(self): headers = {"Content-Type": "application/json", "User-Agent": "Agora-Py", "Authorization": settings.Agora.Token} # data = {"username": "topmonero"} r = requests.get(f"{settings.Agora.Base}/dashboard", headers=headers) parsed = r.json()["data"] count = parsed["contact_count"] if not count: return False # for contact in parsed["contact_list"]: # contact_id = contact["data"]["contact_id"] # buyer = contact["data"]["buyer"]["username"] # seller = contact["data"]["seller"]["username"] # amount = contact["data"]["amount"] # amount_xmr = contact["data"]["amount_xmr"] # fee_xmr = contact["data"]["fee_xmr"] # currency = contact["data"]["currency"] # if not contact["data"]["is_selling"]: # continue return parsed def get_messages(self, contact_id): headers = {"Content-Type": "application/json", "User-Agent": "Agora-Py", "Authorization": settings.Agora.Token} r = requests.get(f"{settings.Agora.Base}/contact_messages/{contact_id}", headers=headers) parsed = r.json() return parsed def get_ads(self): headers = {"Content-Type": "application/json", "User-Agent": "Agora-Py", "Authorization": settings.Agora.Token} r = requests.get(f"{settings.Agora.Base}/ads", headers=headers) parsed = r.json() return parsed def create_ad(self, countrycode, currency, price): headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0", "Authorization": settings.Agora.Token, } data = { "countrycode": countrycode, "currency": currency, "trade_type": "ONLINE_SELL", "asset": "XMR", "price_equation": f"coingeckoxmrusd*{settings.Agora.Margin}", "track_max_amount": False, "require_trusted_by_advertiser": False, "online_provider": "REVOLUT", "verified_email_required": False, "msg": settings.Agora.Ad, "min_amount": price * float(settings.Agora.Margin), # "max_amount": a, # "limit_to_fiat_amounts": a, "payment_method_detail": settings.Agora.PaymentMethodDetail, # "first_time_limit_asset": a, "require_feedback_score": settings.Agora.FeedbackScore, "account_info": settings.Agora.PaymentDetails, } r = requests.post(f"{settings.Agora.WebBase}/ad-create", data=data, headers=headers) self.log.info(r.content) parsed = r.json() return parsed def dist_countries(self): prices = {} rates = self.cr.get_rates("USD") for currency, countrycode in loads(settings.Agora.DistList): prices[currency] = rates[currency] rtrn = self.create_ad(countrycode, currency, prices[currency]) if not rtrn: return False return True