-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
81 lines (68 loc) · 2.52 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import quart
from dataclasses import dataclass
from quart_cors import cors
from quart_schema import validate_request
import os
from dotenv import load_dotenv
load_dotenv()
from db import DBHandler
from tele import Telegramhandler
from utility import CheckTelegramHash, HashToken, RandomConfCode
app = quart.Quart('main',
static_folder="web/dist/assets")
app = cors(app, allow_origin="*")
@dataclass
class TempKeyData:
temp_key: str
@dataclass
class SetNewTokenData:
temp_key: str
new_token: str
conf_code: str
@app.route('/')
async def mainPage():
return await quart.send_from_directory('web/dist','index.html')
@app.route('/Login', methods=['POST'])
async def CheckTelegramAuth():
requestData = await quart.request.get_json()
if "id" not in requestData or not isinstance(requestData["id"], int):
return quart.abort(400)
if CheckTelegramHash(requestData, telegramSecret):
response = quart.jsonify(await db.LoginUser(requestData))
else:
response = quart.jsonify({'status': False})
return response
@app.route('/GetConfCode', methods=['POST'])
@validate_request(TempKeyData)
async def GetConfCode(data: TempKeyData):
confCode = RandomConfCode()
response = await db.SetConfCode(data.temp_key, confCode)
if response['status']==True:
telegramId = (await db.FindUser(tempKey=data.temp_key))['telegram-id']
await teleHandler.SendConfCode(telegramId, confCode)
return quart.jsonify(response)
@app.route('/SetNewToken', methods=['POST'])
@validate_request(SetNewTokenData)
async def SetNewToken(data: SetNewTokenData):
response = await db.UpdateToken(data.temp_key, data.conf_code, data.new_token)
return quart.jsonify(response)
@app.route('/GetPortfolios', methods=['POST'])
@validate_request(TempKeyData)
async def GetPortfolios(data: TempKeyData):
response = await db.GetPortfolios(data.temp_key)
return quart.jsonify(response)
@app.route('/GetPortfolioSums', methods=['POST'])
@validate_request(TempKeyData)
async def GetPortfolioSums(data: TempKeyData):
response = await db.GetPortfolioSums(data.temp_key)
return quart.jsonify(response)
@app.route('/GetAllBonds', methods=['GET'])
async def GetAllBonds():
return quart.jsonify(await db.GetAllBonds())
teleToken = os.getenv('TELETOKEN')
telegramSecret = HashToken(teleToken.encode('utf-8'))
#db = DBHandler(connString='mongodb://localhost:27017/', dbName='nomisma-db')
db = DBHandler()
teleHandler = Telegramhandler(teleToken)
#app.run(host='0.0.0.0', port=80)
#app.run(debug=True)