Переработка API, готовый userAPI
This commit is contained in:
		
							parent
							
								
									992989238d
								
							
						
					
					
						commit
						e5711a508e
					
				
							
								
								
									
										112
									
								
								api.py
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								api.py
									
									
									
									
									
								
							| @ -3,6 +3,7 @@ from pydantic import BaseModel | ||||
| from datetime import datetime, timedelta | ||||
| from statistics import median | ||||
| from uuid import uuid4 | ||||
| from random import randint | ||||
| 
 | ||||
| # Fix 3.3 + 0.15 = 3.4499999999999997 | ||||
| from decimal import Decimal as d | ||||
| @ -27,7 +28,7 @@ def stat_run(cdm_change): | ||||
|     # Низшее значение, высшее значение | ||||
|     # Изменение баланса и time2cdm | ||||
|     # Прирост за счёт алмазов, за счёт time2cdm | ||||
|      | ||||
| 
 | ||||
|     # Получаем все балансы | ||||
|     db = read() | ||||
|     bals = [] | ||||
| @ -110,7 +111,7 @@ def gen_id(): | ||||
| 			return str(i) | ||||
| 	return 'Full?' | ||||
| 
 | ||||
| class User_add(BaseModel): | ||||
| class Add_user(BaseModel): | ||||
| 	token: str | ||||
| 	id: str = None | ||||
| 	tg: str = None | ||||
| @ -118,8 +119,8 @@ class User_add(BaseModel): | ||||
| 	mine: str = None | ||||
| 	nick: str | ||||
| 	passwd: str | ||||
| @app.post('/api/user_add/') | ||||
| def user_add(it: User_add): | ||||
| @app.post('/api/add_user/') | ||||
| def add_user(it: Add_user): | ||||
| 	token, id, tg, ds, mine, nick, passwd = it.token, it.id, it.tg, it.ds, it.mine, it.nick, it.passwd | ||||
| 	id = gen_id() | ||||
| 	if token_check(token): | ||||
| @ -138,11 +139,11 @@ def user_add(it: User_add): | ||||
| 	else: | ||||
| 		return 'Error' | ||||
| 
 | ||||
| class User_del(BaseModel): | ||||
| class Del_user(BaseModel): | ||||
| 	token: str | ||||
| 	id: str | ||||
| @app.post('/api/user_del/') | ||||
| def user_del(it: User_del): | ||||
| @app.post('/api/del_user/') | ||||
| def del_user(it: Del_user): | ||||
| 	token, id = it.token, it.id | ||||
| 	if token_check(token): | ||||
| 		db = read() | ||||
| @ -160,12 +161,12 @@ def user_del(it: User_del): | ||||
| 	else: | ||||
| 		return 'Error' | ||||
| 
 | ||||
| class Coins_add(BaseModel): | ||||
| class Add_coins(BaseModel): | ||||
| 	token: str | ||||
| 	id: str | ||||
| 	amount: str | ||||
| @app.post('/api/coins_add/') | ||||
| def coins_add(it: Coins_add): | ||||
| @app.post('/api/add_coins/') | ||||
| def add_coins(it: Add_coins): | ||||
| 	token, id, amount = it.token, it.id, abs(float(it.amount)) | ||||
| 	if token_check(token): | ||||
| 		db = read() | ||||
| @ -176,12 +177,12 @@ def coins_add(it: Coins_add): | ||||
| 	else: | ||||
| 		return 'Error' | ||||
| 
 | ||||
| class Coins_del(BaseModel): | ||||
| class Del_coins(BaseModel): | ||||
| 	token: str | ||||
| 	id: str | ||||
| 	amount: str | ||||
| @app.post('/api/coins_del/') | ||||
| def coins_del(it: Coins_del): | ||||
| @app.post('/api/del_coins/') | ||||
| def del_coins(it: Del_coins): | ||||
|     token, id, amount = it.token, it.id, abs(float(it.amount)) | ||||
|     if token_check(token): | ||||
|         db = read() | ||||
| @ -195,13 +196,13 @@ def coins_del(it: Coins_del): | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Coins_transfer(BaseModel): | ||||
| class Transfer_coins(BaseModel): | ||||
| 	token: str | ||||
| 	src_id: str | ||||
| 	dst_id: str | ||||
| 	amount: str | ||||
| @app.post('/api/coins_transfer/') | ||||
| def coins_transfer(it: Coins_transfer): | ||||
| @app.post('/api/transfer_coins/') | ||||
| def transfer_coins(it: Transfer_coins): | ||||
| 	token, src_id, dst_id, amount = it.token, it.src_id, it.dst_id, float(it.amount) | ||||
| 	if token_check(token): | ||||
| 		db = read() | ||||
| @ -448,25 +449,32 @@ def get_time(it: Get_time2cdm): | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| from typing import Optional | ||||
| 
 | ||||
| class Get_stat(BaseModel): | ||||
| 	token: str | ||||
| 	date: Optional[str] = datetime.today().strftime('%Y-%m-%d') | ||||
| @app.post('/api/get_stat/') | ||||
| def get_stat(it: Get_stat): | ||||
|     token = it.token | ||||
|     token, date = it.token, it.date | ||||
|     if token_check(token): | ||||
|         stat_run(0) | ||||
|         db = read('stat.json') | ||||
|         date = datetime.today().strftime('%Y-%m-%d') | ||||
|         #date = datetime.today().strftime('%Y-%m-%d') | ||||
|         if date not in db: | ||||
|             return 'Not found' | ||||
|         stats = db[date] | ||||
|         return stats | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Token_gen(BaseModel): | ||||
| ############# USER API ################ | ||||
| 
 | ||||
| class Gen_token(BaseModel): | ||||
| 	token: str | ||||
| 	id: str | ||||
| @app.post('/api/token_gen/') | ||||
| def token_gen(it: Token_gen): | ||||
| @app.post('/api/gen_token/') | ||||
| def gen_token(it: Gen_token): | ||||
|     token, id = it.token, it.id | ||||
|     if token_check(token): | ||||
|         user_token = str(uuid4()) | ||||
| @ -477,6 +485,68 @@ def token_gen(it: Token_gen): | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class List_fp(BaseModel): | ||||
| 	token: str | ||||
| 	id: str | ||||
| @app.post('/api/list_fp/') | ||||
| def list_fp(it: List_fp): | ||||
|     token, id = it.token, it.id | ||||
|     if token_check(token): | ||||
|         user_api = read('user_api.json') | ||||
|         if id not in user_api['fp']: | ||||
|             user_api['fp'][id] = [] | ||||
|             write(user_api, 'user_api.json') | ||||
|         return user_api['fp'][id] | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| def gen_fp_id(user_api): | ||||
|     ok = False | ||||
|     while not ok: | ||||
|         ok = True | ||||
|         fp_id = str(randint(5236, 645862)) | ||||
|         if fp_id in user_api['fp']: | ||||
|             ok = False | ||||
|     return fp_id | ||||
| 
 | ||||
| class Gen_fp(BaseModel): | ||||
| 	token: str | ||||
| 	id: str | ||||
| 	amount: str | ||||
| @app.post('/api/gen_fp/') | ||||
| def gen_fp(it: Gen_fp): | ||||
|     token, id, amount = it.token, it.id, it.amount | ||||
|     if token_check(token): | ||||
|         user_api = read('user_api.json') | ||||
|         if id not in user_api['fp']: | ||||
|             user_api['fp'][id] = [] | ||||
|             write(user_api, 'user_api.json') | ||||
|         if len(user_api['fp'][id]) >= 5: | ||||
|             return 'Limit' | ||||
|         fp_id = gen_fp_id(user_api) | ||||
|         user_api['fp'][fp_id] = [id, amount] | ||||
|         user_api['fp'][id].append(fp_id) | ||||
|         write(user_api, 'user_api.json') | ||||
|         return fp_id | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Del_fp(BaseModel): | ||||
| 	token: str | ||||
| 	fp_id: str | ||||
| @app.post('/api/del_fp/') | ||||
| def del_fp(it: Del_fp): | ||||
|     token, fp_id = it.token, it.fp_id | ||||
|     if token_check(token): | ||||
|         user_api = read('user_api.json') | ||||
|         id = user_api['fp'][fp_id][0] | ||||
|         del user_api['fp'][fp_id] | ||||
|         user_api['fp'][id].remove(fp_id) | ||||
|         write(user_api, 'user_api.json') | ||||
|         return 'OK' | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
| 	import uvicorn | ||||
| 	uvicorn.run(app, host='0.0.0.0', port=7001) | ||||
|  | ||||
							
								
								
									
										48
									
								
								call2api.py
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								call2api.py
									
									
									
									
									
								
							| @ -41,7 +41,7 @@ def user_in_db(token, id=None, tg=None, ds=None, mine=None, nick=None): | ||||
| 	#print(data) | ||||
| 	return call('api/user_in_db/', data) | ||||
| 
 | ||||
| def user_add(token, nick, passwd, tg=None, ds=None, mine=None): | ||||
| def add_user(token, nick, passwd, tg=None, ds=None, mine=None): | ||||
| 	passwd = hash(passwd) | ||||
| 	data = {'token': token, 'nick': nick, 'passwd': passwd} | ||||
| 	if tg: | ||||
| @ -51,23 +51,23 @@ def user_add(token, nick, passwd, tg=None, ds=None, mine=None): | ||||
| 	if mine: | ||||
| 		data['mine'] = mine | ||||
| 	print(data) | ||||
| 	return call('api/user_add/', data) | ||||
| 	return call('api/add_user/', data) | ||||
| 
 | ||||
| def user_del(token, id): | ||||
| def del_user(token, id): | ||||
| 	data = {'token': token, 'id': id} | ||||
| 	return call('api/user_del/', data) | ||||
| 	return call('api/del_user/', data) | ||||
| 
 | ||||
| def coins_add(token, id, amount): | ||||
| def add_coins(token, id, amount): | ||||
| 	data = {'token': token, 'id': id, 'amount': amount} | ||||
| 	return call('api/coins_add/', data) | ||||
| 	return call('api/add_coins/', data) | ||||
| 
 | ||||
| def coins_del(token, id, amount): | ||||
| def del_coins(token, id, amount): | ||||
| 	data = {'token': token, 'id': id, 'amount': amount} | ||||
| 	return call('api/coins_del/', data) | ||||
| 	return call('api/del_coins/', data) | ||||
| 
 | ||||
| def coins_transfer(token, src_id, dst_id, amount): | ||||
| def transfer_coins(token, src_id, dst_id, amount): | ||||
| 	data = {'token': token, 'src_id': src_id, 'dst_id': dst_id, 'amount': amount} | ||||
| 	return call('api/coins_transfer/', data) | ||||
| 	return call('api/transfer_coins/', data) | ||||
| 
 | ||||
| def update_tg(token, id, tg): | ||||
| 	if tg != None: | ||||
| @ -96,7 +96,6 @@ def update_time(token, id, time): | ||||
|   data = {'token': token, 'id': id, 'time': time} | ||||
|   return call('api/update_time/', data) | ||||
| 
 | ||||
| 
 | ||||
| def check_bal(token, id): | ||||
| 	data = {'token': token, 'id': id} | ||||
| 	return call('api/check_bal/', data) | ||||
| @ -125,8 +124,10 @@ def get_time2cdm(token, id): | ||||
|     data = {'token': token, 'id': id} | ||||
|     return call('api/get_time2cdm/', data) | ||||
| 
 | ||||
| def get_stat(token): | ||||
| def get_stat(token, date = None): | ||||
|     data = {'token': token} | ||||
|     if date: | ||||
|         data['date'] = date | ||||
|     return loads(call('api/get_stat/', data, fix=False)) | ||||
| 
 | ||||
| def transfer_callback(addr, token, src_nick, dst_nick, amount): | ||||
| @ -134,12 +135,25 @@ def transfer_callback(addr, token, src_nick, dst_nick, amount): | ||||
| 	data = {'token': token, 'src_nick': src_nick, 'dst_nick': dst_nick, 'amount': amount} | ||||
| 	return call(addr + 'api/transfer_callback/', data, pre=False) | ||||
| 
 | ||||
| def token_gen(token, id): | ||||
| def gen_token(token, id): | ||||
| 	data = {'token': token, 'id': id} | ||||
| 	return call('api/token_gen/', data) | ||||
| 	return call('api/gen_token/', data) | ||||
| 
 | ||||
| def gen_fp_mess(token, nick, amount, chat_id, fp_id): | ||||
|     data = {'token': token, 'nick': nick, 'amount': amount, 'chat_id': chat_id, 'fp_id': fp_id} | ||||
|     return call('http://127.0.0.1:7002/api/gen_fp_mess/', data, pre=False) | ||||
| 
 | ||||
| def list_fp(token, id): | ||||
|     data = {'token': token, 'id': id} | ||||
|     return call('api/list_fp/', data) | ||||
| 
 | ||||
| def gen_fp(token, id, amount): | ||||
|     data = {'token': token, 'id': id, 'amount': amount} | ||||
|     return call('api/gen_fp/', data) | ||||
| 
 | ||||
| def del_fp(token, fp_id): | ||||
|     data = {'token': token, 'fp_id': fp_id} | ||||
|     return call('api/del_fp/', data) | ||||
| 
 | ||||
| def fp_generate(token, nick, amount, chat_id): | ||||
|     data = {'token': token, 'nick': nick, 'amount': amount, 'chat_id': chat_id} | ||||
|     return call('http://127.0.0.1:7002/api/fp_generate/', data, pre=False) | ||||
| 
 | ||||
| #print( user_in_db('ee77b9d8-44f3-4e01-a702-69d5524ee50b', '1234') ) | ||||
|  | ||||
							
								
								
									
										2
									
								
								db.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								db.py
									
									
									
									
									
								
							| @ -35,7 +35,7 @@ if not os.path.exists('stat.json'): | ||||
| 	print('Created new stat.json') | ||||
| 
 | ||||
| if not os.path.exists('user_api.json'): | ||||
| 	db = {'tokens': {}} | ||||
| 	db = {'tokens': {}, 'fp': {}} | ||||
| 	js = json.dumps(db, indent=2) | ||||
| 	with open("user_api.json", "w") as outfile: | ||||
| 		outfile.write(js) | ||||
|  | ||||
							
								
								
									
										57
									
								
								tg.py
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								tg.py
									
									
									
									
									
								
							| @ -49,23 +49,32 @@ def start(message): | ||||
|     if message.text == '/start': | ||||
|         bot.reply_to(message, 'Всё работает', reply_markup=markup) | ||||
|     else: | ||||
|         try: | ||||
|             nick, amount = message.text.split(' ')[1].split('_') | ||||
|         #try: | ||||
|         if 1: | ||||
|             #nick, amount = message.text.split(' ')[1].split('_') | ||||
|             fp_id = message.text.split(' ')[1] | ||||
|             dst_id, amount = read('user_api.json')['fp'][fp_id] | ||||
|             nick = get_nick(API_TOKEN, dst_id) | ||||
|              | ||||
|             if float(amount) <= 0.0001: | ||||
|                 bot.reply_to(message, 'Слишком малое или недопустимое значение.') | ||||
|                 return  | ||||
|             amount = str(float(amount)) # Защиты от 1000 нулей в начале | ||||
|             src_id = user_in_db(API_TOKEN, tg=message.chat.id) | ||||
|             dst_id = user_in_db(API_TOKEN, nick=nick) | ||||
|             #dst_id = user_in_db(API_TOKEN, nick=nick) | ||||
|             if dst_id == 'false': | ||||
|                 bot.reply_to(message, 'Не существует такого пользователя.') | ||||
|             else: | ||||
|                 status = coins_transfer(API_TOKEN, src_id, dst_id, amount) | ||||
|                 print(src_id) | ||||
|                 print(amount) | ||||
|                 status = transfer_coins(API_TOKEN, src_id, dst_id, amount) | ||||
|                 if status == 'No_money': | ||||
|                     bot.reply_to(message, 'Недостаточно средств.') | ||||
|                 elif status == 'OK': | ||||
|                     bot.reply_to(message, f'''Успешно переведено {hcode(amount)} CDM. | ||||
| Адресат: {hcode(nick)}''', parse_mode='HTML') | ||||
| 
 | ||||
|                     del_fp(API_TOKEN, fp_id) | ||||
|    | ||||
|                     tg_dst = get_tg(API_TOKEN, dst_id) | ||||
|                     ds_dst = get_ds(API_TOKEN, dst_id) | ||||
| @ -74,9 +83,8 @@ def start(message): | ||||
|                         transfer_callback('http://127.0.0.1:7002/', API_TOKEN, src_nick, nick, amount) | ||||
|                     elif ds_dst != 'null': | ||||
|                         transfer_callback('http://127.0.0.1:7003/', API_TOKEN, src_nick, nick, amount) | ||||
|         #bot.reply_to(message, f'CATCHED PAYLOAD: {str(params)}') | ||||
|         except: | ||||
|             pass | ||||
|         #except: | ||||
|         #    pass | ||||
| 
 | ||||
| @bot.message_handler(commands=['help']) | ||||
| def help(message): | ||||
| @ -90,7 +98,7 @@ def help(message): | ||||
| /bal              - Баланс | ||||
| /pay ник сумма    - Перевод | ||||
| /stats            - Статистика | ||||
| /token_gen        - (Ре)генерация токена API` | ||||
| /gen_token        - (Ре)генерация токена API` | ||||
| 
 | ||||
| [Исходный код](https://gitea.del.pw/justuser/CryptoDM) | ||||
| [API и документация](https://cdm-api.del.pw/docs#/) | ||||
| @ -108,7 +116,7 @@ def reg(message): | ||||
| 			com, nick, passwd = message.text.split() | ||||
| 			# Проверяем нет ли такого же ника | ||||
| 			if user_in_db(API_TOKEN, nick=nick) == 'false': | ||||
| 				if user_add(API_TOKEN, nick, passwd, tg=message.chat.id) == 'OK': | ||||
| 				if add_user(API_TOKEN, nick, passwd, tg=message.chat.id) == 'OK': | ||||
| 					bot.reply_to(message, 'Вы успешно зарегистрированны!') | ||||
| 				else: | ||||
| 					bot.reply_to(message, 'Что-то пошло не так...') | ||||
| @ -201,7 +209,7 @@ def pay(message): | ||||
| 			if dst_id == 'false': | ||||
| 				bot.reply_to(message, 'Не существует такого пользователя.') | ||||
| 			else: | ||||
| 				status = coins_transfer(API_TOKEN, src_id, dst_id, amount) | ||||
| 				status = transfer_coins(API_TOKEN, src_id, dst_id, amount) | ||||
| 				if status == 'No_money': | ||||
| 					bot.reply_to(message, 'Недостаточно средств.') | ||||
| 				elif status == 'OK': | ||||
| @ -268,11 +276,11 @@ def set_course(message): | ||||
| CDM в час: `{conf['time2cdm']*3600}`''', parse_mode = 'Markdown') | ||||
| 
 | ||||
| 
 | ||||
| @bot.message_handler(commands=['token_gen']) | ||||
| def token_gen_tg(message): | ||||
| @bot.message_handler(commands=['gen_token']) | ||||
| def gen_token_tg(message): | ||||
|     if checkauth(message): | ||||
|         id = user_in_db(API_TOKEN, tg=message.chat.id) | ||||
|         token = token_gen(API_TOKEN, id) | ||||
|         token = gen_token(API_TOKEN, id) | ||||
|         bot.reply_to(message, f'''Ваш новый токен: {hcode(f"{token}")} | ||||
| 
 | ||||
| ⚠️ВНИМАНИЕ, не передавайте никому токен. Администрация не спрашивает токены.⚠️''', parse_mode='HTML') | ||||
| @ -305,17 +313,22 @@ def transfer_callback_api(it: Transfer_callback_api): | ||||
| 		return 'Error' | ||||
| 
 | ||||
| # Генерация сообщения с быстрым платежом | ||||
| class Fp_generate_api(BaseModel): | ||||
| class Gen_fp_mess_api(BaseModel): | ||||
| 	token: str | ||||
| 	nick: str | ||||
| 	amount: str | ||||
| 	chat_id: str | ||||
| @app.post('/api/fp_generate/') | ||||
| def fp_generate_api(it: Fp_generate_api): | ||||
|     try: | ||||
|         token, nick, amount, chat_id = it.token, it.nick, it.amount, it.chat_id | ||||
| 	fp_id: str | ||||
| @app.post('/api/gen_fp_mess/') | ||||
| def gen_fp_mess_api(it: Gen_fp_mess_api): | ||||
|     #try: | ||||
|     if 1: | ||||
|         token, nick, amount, chat_id, fp_id = it.token, it.nick, it.amount, it.chat_id, it.fp_id | ||||
|         token, fp_id, chat_id = it.token, it.fp_id, it.chat_id | ||||
|         keyboard = telebot.types.InlineKeyboardMarkup() | ||||
|         url_button = telebot.types.InlineKeyboardButton('ОПЛАТИТЬ', url=f'https://t.me/cdm_bank_bot?start={nick}_{amount}') | ||||
|         url_button = telebot.types.InlineKeyboardButton('ОПЛАТИТЬ' | ||||
|         , url=f'https://t.me/cdm_bank_bot?start={fp_id}') | ||||
|         #, url=f'https://t.me/cdm_bank_bot?start={nick}_{amount}') | ||||
|         keyboard.add(url_button) | ||||
|         bot.send_message(int(chat_id), f''' | ||||
| `----- ЧЕК -----` | ||||
| @ -325,11 +338,11 @@ def fp_generate_api(it: Fp_generate_api): | ||||
| 
 | ||||
|         #[ОПЛАТИТЬ](https://t.me/cdm_bank_bot?start={nick}_{amount})''', parse_mode='Markdown') | ||||
|         return 'OK' | ||||
|     except: | ||||
|         return 'Error' | ||||
|     #except: | ||||
|     #    return 'Error' | ||||
| 
 | ||||
| def run_api(): | ||||
| 	uvicorn.run(app, host='127.0.0.1', port=7002) | ||||
| 	uvicorn.run(app, host='0.0.0.0', port=7002) | ||||
| 
 | ||||
| # Запускаем API для переводов | ||||
| api = Thread(target=run_api) | ||||
|  | ||||
							
								
								
									
										113
									
								
								user_api.py
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								user_api.py
									
									
									
									
									
								
							| @ -1,10 +1,11 @@ | ||||
| from fastapi import FastAPI, Request, HTTPException | ||||
| from pydantic import BaseModel | ||||
| from typing import Optional | ||||
| from time import time | ||||
| 
 | ||||
| # Отключение логирования для уменьшения нагрузки | ||||
| import logging | ||||
| logging.disable(logging.CRITICAL) | ||||
| #logging.disable(logging.CRITICAL) | ||||
| 
 | ||||
| # Fix 3.3 + 0.15 = 3.4499999999999997 | ||||
| from decimal import Decimal as d | ||||
| @ -19,7 +20,7 @@ from call2api import * | ||||
| app = FastAPI() | ||||
| API_TOKEN = read('conf.json')['api_token'] | ||||
| 
 | ||||
| def token_check(nick, token): | ||||
| def check_token(nick, token): | ||||
| 	db = read('user_api.json') | ||||
| 	id = user_in_db(API_TOKEN, nick=nick) | ||||
| 	if id != 'false' and token == db['tokens'][id]: | ||||
| @ -50,7 +51,7 @@ def check_token_user(request: Request, it: Check_token_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token = it.nick, it.token | ||||
|     if token_check(nick, token): | ||||
|     if check_token(nick, token): | ||||
|         return 'OK' | ||||
|     else: | ||||
|         return 'Error' | ||||
| @ -63,35 +64,12 @@ def check_bal_user(request: Request, it: Check_bal_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token = it.nick, it.token | ||||
|     if token_check(nick, token): | ||||
|     if check_token(nick, token): | ||||
|         id = user_in_db(API_TOKEN, nick=nick) | ||||
|         return check_bal(API_TOKEN, id) | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Coins_transfer_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
|     dst_nick: str | ||||
|     amount: str | ||||
| @app.post('/api/coins_transfer/') | ||||
| def coins_transfer_user(request: Request, it: Coins_transfer_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token, dst_nick, amount = it.nick, it.token, it.dst_nick, str(float(it.amount)) | ||||
|     if token_check(nick, token): | ||||
|         id = user_in_db(API_TOKEN, nick=nick) | ||||
|         dst_id = user_in_db(API_TOKEN, nick=dst_nick) | ||||
|         if dst_id == 'false': | ||||
|             return 'Error' | ||||
|         if coins_transfer(API_TOKEN, id, dst_id, amount) == 'OK': | ||||
|             tg_dst = get_tg(API_TOKEN, dst_id) | ||||
|             if tg_dst != 'null': | ||||
|                 transfer_callback('http://127.0.0.1:7002/', API_TOKEN, nick, dst_nick, amount) | ||||
|             return 'OK' | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Get_time2cdm_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
| @ -100,7 +78,7 @@ def get_time_user(request: Request, it: Get_time2cdm_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token = it.nick, it.token | ||||
|     if token_check(nick, token): | ||||
|     if check_token(nick, token): | ||||
|         id = user_in_db(API_TOKEN, nick=nick) | ||||
|         return get_time2cdm(API_TOKEN, id) | ||||
|     else: | ||||
| @ -109,28 +87,91 @@ def get_time_user(request: Request, it: Get_time2cdm_user): | ||||
| class Get_stat_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
|     date: Optional[str] = None | ||||
| @app.post('/api/get_stat/') | ||||
| def get_stat_user(request: Request, it: Get_stat_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token = it.nick, it.token | ||||
|     if token_check(nick, token): | ||||
|         return get_stat(API_TOKEN) | ||||
|     nick, token, date = it.nick, it.token, it.date | ||||
|     if check_token(nick, token): | ||||
|         if date != None: | ||||
|             return get_stat(API_TOKEN, date) | ||||
|         else: | ||||
|             return get_stat(API_TOKEN) | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Fp_generate_user(BaseModel): | ||||
| class Transfer_coins_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
|     dst_nick: str | ||||
|     amount: str | ||||
| @app.post('/api/transfer_coins/') | ||||
| def transfer_coins_user(request: Request, it: Transfer_coins_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token, dst_nick, amount = it.nick, it.token, it.dst_nick, str(float(it.amount)) | ||||
|     if check_token(nick, token): | ||||
|         id = user_in_db(API_TOKEN, nick=nick) | ||||
|         dst_id = user_in_db(API_TOKEN, nick=dst_nick) | ||||
|         if dst_id == 'false': | ||||
|             return 'Error' | ||||
|         if transfer_coins(API_TOKEN, id, dst_id, amount) == 'OK': | ||||
|             tg_dst = get_tg(API_TOKEN, dst_id) | ||||
|             if tg_dst != 'null': | ||||
|                 transfer_callback('http://127.0.0.1:7002/', API_TOKEN, nick, dst_nick, amount) | ||||
|             return 'OK' | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Gen_fp_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
|     amount: str | ||||
|     chat_id: str | ||||
| @app.post('/api/fp_generate/') | ||||
| def fp_generate_user(request: Request, it: Fp_generate_user): | ||||
| @app.post('/api/gen_fp/') | ||||
| def gen_fp_user(request: Request, it: Gen_fp_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token, amount, chat_id = it.nick, it.token, it.amount, it.chat_id | ||||
|     if token_check(nick, token): | ||||
|         return fp_generate(token, nick, amount, chat_id) | ||||
|     if check_token(nick, token): | ||||
|         id = user_in_db(API_TOKEN, nick=nick) | ||||
|         fp_id = gen_fp(API_TOKEN, id, amount) | ||||
|         if fp_id == 'Error': | ||||
|             return 'Error' | ||||
|         elif fp_id == 'Limit': | ||||
|             return 'Limit' | ||||
|         else: | ||||
|             return gen_fp_mess(token, nick, amount, chat_id, fp_id) | ||||
|              | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class List_fp_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
| @app.post('/api/list_fp/') | ||||
| def list_fp_user(request: Request, it: List_fp_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token = it.nick, it.token | ||||
|     if check_token(nick, token): | ||||
|         id = user_in_db(API_TOKEN, nick=nick) | ||||
|         return list_fp(API_TOKEN, id) | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
| class Del_fp_user(BaseModel): | ||||
|     nick: str | ||||
|     token: str | ||||
|     fp_id: str | ||||
| @app.post('/api/del_fp_user/') | ||||
| def del_fp_user(request: Request, it: Del_fp_user): | ||||
|     if too_fast(request): | ||||
|         raise HTTPException(status_code=randint(100,999), detail=f"{choice(FAKE_TEXTS)}") | ||||
|     nick, token, fp_id = it.nick, it.token, it.fp_id | ||||
|     if check_token(nick, token): | ||||
|         return del_fp(API_TOKEN, fp_id) | ||||
|     else: | ||||
|         return 'Error' | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user