-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.py
98 lines (75 loc) · 2.58 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from typing import Any
import time
from datetime import datetime
from flask import Flask, request, abort
app = Flask(__name__)
messages = []
users = []
@app.route("/")
def hello():
return "<b>Hello, World!</b>"
@app.route("/status")
def status():
#Я добавил параметр username для того чтобы определить точное количество участников.Одинаковых имен может быть много.
#Пользователи хранятся в list
#Также мой сервер проверяет на отличие username при входе в чат.Если username был использован,он просит
# ввести username заново
#full server code: https://github.com/computerbox124/Hey-Hajiyevs/blob/master/server.py
dt = datetime.now()
return {
'status': True,
'name': 'Hajiyevs Messenger',
'time': time.time(),
'time1': time.asctime(),
'time2': dt,
'time3': str(dt),
'time4': dt.isoformat(),
'time5': dt.strftime('%d %b %H:%M:%S'),
'username_count': 'At the moment there are ' + str(len(users)) + ' users online.'
}
@app.route("/send", methods=['POST'])
def send_message():
data = request.json
if not isinstance(data, dict):
return abort(400)
name = data.get('name')
text = data.get('text')
username = data.get('username')
status = data.get('status')
if not isinstance(name, str) or len(name) == 0:
return abort(400)
if not isinstance(username, str) or len(username) == 0:
return abort(400)
if not isinstance(status, str) or len(status) == 0:
return abort(400)
if username in users and status == 'login':
return {'status': 'User with such username was created!'}
if status == 'login':
users.append(username)
return {'status': 'Ok'}
elif status == 'logout':
users.remove(username)
return {'status': 'Ok'}
if not isinstance(text, str) or \
len(text) == 0 or len(text) > 1000:
return abort(400)
message = {
'name': name,
'text': text,
'time': time.time(),
'username': username
}
messages.append(message)
return {'status':'Ok'}
@app.route("/messages")
def get_messages():
try:
after = float(request.args['after'])
except:
return abort(400)
response = []
for message in messages:
if message['time'] > after:
response.append(message)
return {'messages': response[:50]}
app.run()