138 lines
5.4 KiB
Python
138 lines
5.4 KiB
Python
# HERE WE GO
|
|
# -------- RUS ---------
|
|
# ⚠️ Для тех, кто не понял ⚠️
|
|
# Именно здесь вы можете тыкать UserAPI.
|
|
# Секция UserAPI - для вас.
|
|
#
|
|
# ⚠️ Если вы хотите с асинхрон ⚠️
|
|
# Перейдите в call2user_api.py
|
|
#
|
|
# Если вы не находитесь на сервере (а вы не находитесь), вам нужно поменять url_prefix.
|
|
# Сделать формата 'https://vpc-api.del.pw' (если эта ссылка не устарела)
|
|
#
|
|
# Секция SystemAPI и call2api.py вам не нужен, но можете его изучить.
|
|
# Эта часть кода взаимодействует с SystemAPI, который недоступен.
|
|
#
|
|
# Для использования просто импортировать этот файл и использовать функции:
|
|
# ```
|
|
# from call2user_api_sync import *
|
|
# ...
|
|
# user = user_in_db(username, user_token)
|
|
# ```
|
|
# Можете переносить файл куда хотите, но вместе с db.py (функция read() + авто-создание конфигурации)
|
|
# ----------------------
|
|
|
|
# Загрузка префикса UserAPI
|
|
# (МЕНЯЙТЕ URL!!! если нужно, в config.json)
|
|
from db import read
|
|
import requests
|
|
from json import loads
|
|
|
|
# Synchronous database read
|
|
CONFIG = read()
|
|
url_prefix = CONFIG['user_api_url']
|
|
|
|
def call(api_url, data, pre=True, fix=True):
|
|
url = (url_prefix + api_url) if pre else api_url
|
|
with requests.Session() as session:
|
|
response = session.post(url, json=data)
|
|
text = 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
|
|
|
|
#------------------------------------------------------------
|
|
# UserAPI
|
|
#------------------------------------------------------------
|
|
# Получение информации о токене
|
|
# IN : username (str), user_token (str)
|
|
# OUT: {'issue_date': str, 'logs': str} / 'Invalid username or token' (401) / 'Token not exist' (404) / General error (500)
|
|
def get_user_token_info(username, user_token):
|
|
data = {'username': username, 'user_token': user_token}
|
|
return call('api/get_user_token_info/', data)
|
|
|
|
# Получение пользователя (ник, айди ТГ, ДС и т.п.)
|
|
# IN : username (str), user_token (str)
|
|
# OUT: {
|
|
# "creator_id_type": str,
|
|
# "username": str,
|
|
# "mine_uuid": str,
|
|
# "tg_id": int,
|
|
# "balance": float,
|
|
# "tokens": "{}",
|
|
# "password": "HIDDEN",
|
|
# "creator_id": str,
|
|
# "mine_name": str,
|
|
# "ds_id": int,
|
|
# "frozen": "no"/"temporarily"/"forever",
|
|
# "last_activity": null,
|
|
# } / 'Invalid username or token' (401) / 'User not found' (404) / General error (500)
|
|
def user_in_db(username, user_token):
|
|
data = {'username': username, 'user_token': user_token}
|
|
return call('api/user_in_db/', data)
|
|
|
|
# Перевод монет
|
|
# IN : username (str), user_token (str), dst_username (str), amount (float)
|
|
# OUT: 'OK' / 'Invalid username or token' (401) / 'No money' (400) / 'Too low' (400)
|
|
# / 'User not found' (404) / 'Frozen temporarily' (401) / 'Frozen forever' (401)
|
|
# / General error (500)
|
|
def transfer_coins(username, user_token,
|
|
dst_username, amount):
|
|
data = {'username': username, 'user_token': user_token,
|
|
'dst_username': dst_username, 'amount': amount}
|
|
return call('api/transfer_coins/', data)
|
|
|
|
# Получение глобальной статистики
|
|
# IN : username (str), user_token (str)
|
|
# OUT: {
|
|
# "amount": float,
|
|
# "frozen_amount": int,
|
|
# "users": int,
|
|
# "frozen_users": int,
|
|
# "average": float,
|
|
# "median": float,
|
|
# "min": float,
|
|
# "max": float
|
|
# } / 'Invalid username or token' (401) / General error (500)
|
|
def get_stats(username, user_token):
|
|
data = {'username': username, 'user_token': user_token}
|
|
return call('api/get_stats/', data)
|
|
|
|
# Создание счёта на оплату, чтобы проверить оплачен ли он
|
|
# Использование в боте: /pay <ник> <сумма> <invoice_id>
|
|
# IN : username (str), user_token (str), amount (float)
|
|
# OUT: invoice_id (str) / 'Invalid username or token' (401) / 'Destination user not found' (401)
|
|
# / General error (500)
|
|
def create_invoice(username, user_token, amount=None):
|
|
data = {'username': username, 'user_token': user_token}
|
|
if amount:
|
|
data['amount'] = amount
|
|
return call('api/create_invoice/', data)
|
|
|
|
# Удаление счёта на оплату по invoice_id
|
|
# IN : username (str), user_token (str), invoice_id (str)
|
|
# OUT: 'OK' / 'Invalid username or token' (401) / 'Invoice id not found' (404) / General error (500)
|
|
def delete_invoice(username, user_token, invoice_id):
|
|
data = {'username': username, 'user_token': user_token, 'invoice_id': invoice_id}
|
|
return call('api/delete_invoice/', data)
|
|
|
|
# Получение информации о счёте на оплату
|
|
# IN : username (str), user_token (str), invoice_id (str)
|
|
# OUT: {
|
|
# "id": str,
|
|
# "dst_username": str,
|
|
# "amount": null / float,
|
|
# "status": false/true
|
|
# } / 'Invalid username or token' (401) / 'Invoice id not found' (404) / General error (500)
|
|
def get_invoice(username, user_token, invoice_id):
|
|
data = {'username': username, 'user_token': user_token, 'invoice_id': invoice_id}
|
|
return call('api/get_invoice/', data)
|
|
#------------------------- END ------------------------------ |