from aiohttp import ClientSession from json import loads import asyncio from db import read, write CONFIG = asyncio.run(read()) global url_prefix url_prefix = CONFIG['system_api_url'] async def call(api_url, data, pre=True, fix=True): url = (url_prefix + api_url) if pre else api_url async with ClientSession() as session: async with session.post(url, json=data) as response: text = await response.text() try: json = loads(text) if 'detail' in json: return json['detail'] else: return json except: if fix: return text.replace('"', '') else: return text async def check_user_token(token, username, user_token): data = {'token': token, 'username': username, 'user_token': user_token} return await call('api/check_user_token/', data) async def user_in_db(token, username=None, creator_id=None, tg_id=None, ds_id=None, mine_name=None): data = {'token': token} if username: data['username'] = username if creator_id: data['creator_id'] = creator_id if tg_id: data['tg_id'] = tg_id if ds_id: data['ds_id'] = ds_id if mine_name: data['mine_name'] = mine_name return await call('api/user_in_db/', data) async def transfer_coins(token, src_username, dst_username, amount): data = {'token': token, 'src_username': src_username, 'dst_username': dst_username, 'amount': amount} return await call('api/transfer_coins/', data) async def get_stats(token): return await call('api/get_stats/', token) async def create_invoice(token, dst_username, amount=None): data = {'token': token, 'dst_username': dst_username} if amount: data['amount'] = amount return await call('api/create_invoice/', data) async def delete_invoice(token, id): data = {'token': token, 'id': id} return await call('api/delete_invoice/', data) async def get_invoice(token, id): data = {'token': token, 'id': id} return await call('api/get_invoice/', data)