Rahul-Samedavar commited on
Commit
0154f45
·
verified ·
1 Parent(s): 0ceda66

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +2290 -0
app.py ADDED
@@ -0,0 +1,2290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import random
4
+ import string
5
+ import datetime
6
+ import logging
7
+ from functools import wraps
8
+ from flask import Flask, request, jsonify, session
9
+
10
+ app = Flask(__name__)
11
+ app.secret_key = "super_secret_key_for_demo"
12
+
13
+ logging.basicConfig(level=logging.INFO)
14
+
15
+ DATABASE = {
16
+ "users": [],
17
+ "posts": [],
18
+ "logs": []
19
+ }
20
+
21
+
22
+ def generate_id(prefix="ID"):
23
+ return f"{prefix}_{''.join(random.choices(string.ascii_uppercase + string.digits, k=8))}"
24
+
25
+
26
+ def log_event(event, meta=None):
27
+ entry = {
28
+ "event": event,
29
+ "meta": meta,
30
+ "time": datetime.datetime.utcnow().isoformat()
31
+ }
32
+ DATABASE["logs"].append(entry)
33
+ logging.info(entry)
34
+
35
+
36
+ def require_auth(func):
37
+ @wraps(func)
38
+ def wrapper(*args, **kwargs):
39
+ if "user" not in session:
40
+ return jsonify({"error": "Unauthorized"}), 401
41
+ return func(*args, **kwargs)
42
+ return wrapper
43
+
44
+
45
+ class AnalyticsEngine:
46
+
47
+ def __init__(self):
48
+ self.cache = {}
49
+
50
+ def calculate_user_activity(self, user_id):
51
+ score = 0
52
+ for post in DATABASE["posts"]:
53
+ if post["author"] == user_id:
54
+ score += len(post["content"]) * 0.1
55
+ return score
56
+
57
+ def generate_summary(self):
58
+ summary = []
59
+ for user in DATABASE["users"]:
60
+ activity = self.calculate_user_activity(user["id"])
61
+ summary.append({
62
+ "user": user["username"],
63
+ "activity_score": activity
64
+ })
65
+ return summary
66
+
67
+
68
+ analytics = AnalyticsEngine()
69
+
70
+
71
+ @app.route("/")
72
+ def home():
73
+ return jsonify({
74
+ "status": "running",
75
+ "time": datetime.datetime.utcnow().isoformat()
76
+ })
77
+
78
+
79
+ @app.route("/register", methods=["POST"])
80
+ def register():
81
+ data = request.json
82
+
83
+ user = {
84
+ "id": generate_id("USR"),
85
+ "username": data.get("username"),
86
+ "password": data.get("password"),
87
+ "created_at": datetime.datetime.utcnow().isoformat()
88
+ }
89
+
90
+ DATABASE["users"].append(user)
91
+ log_event("user_registered", user["username"])
92
+
93
+ return jsonify({"message": "registered", "user_id": user["id"]})
94
+
95
+
96
+ @app.route("/login", methods=["POST"])
97
+ def login():
98
+ data = request.json
99
+
100
+ for user in DATABASE["users"]:
101
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
102
+ session["user"] = user["id"]
103
+ log_event("user_login", user["username"])
104
+ return jsonify({"message": "login_success"})
105
+
106
+ return jsonify({"error": "invalid_credentials"}), 403
107
+
108
+
109
+ @app.route("/logout")
110
+ def logout():
111
+ session.clear()
112
+ return jsonify({"message": "logged_out"})
113
+
114
+
115
+ @app.route("/post", methods=["POST"])
116
+ @require_auth
117
+ def create_post():
118
+ data = request.json
119
+
120
+ post = {
121
+ "id": generate_id("PST"),
122
+ "author": session["user"],
123
+ "content": data.get("content"),
124
+ "created": datetime.datetime.utcnow().isoformat()
125
+ }
126
+
127
+ DATABASE["posts"].append(post)
128
+ log_event("post_created", post["id"])
129
+
130
+ return jsonify(post)
131
+
132
+
133
+ @app.route("/posts")
134
+ def list_posts():
135
+ return jsonify(DATABASE["posts"])
136
+
137
+
138
+ @app.route("/analytics/users")
139
+ def analytics_users():
140
+ return jsonify(analytics.generate_summary())
141
+
142
+
143
+ @app.route("/system/stats")
144
+ def system_stats():
145
+ stats = {
146
+ "users": len(DATABASE["users"]),
147
+ "posts": len(DATABASE["posts"]),
148
+ "logs": len(DATABASE["logs"]),
149
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
150
+ }
151
+
152
+ return jsonify(stats)
153
+
154
+
155
+ def log_event(event, meta=None):
156
+ entry = {
157
+ "event": event,
158
+ "meta": meta,
159
+ "time": datetime.datetime.utcnow().isoformat()
160
+ }
161
+ DATABASE["logs"].append(entry)
162
+ logging.info(entry)
163
+
164
+
165
+ def require_auth(func):
166
+ @wraps(func)
167
+ def wrapper(*args, **kwargs):
168
+ if "user" not in session:
169
+ return jsonify({"error": "Unauthorized"}), 401
170
+ return func(*args, **kwargs)
171
+ return wrapper
172
+
173
+
174
+ class AnalyticsEngine:
175
+
176
+ def __init__(self):
177
+ self.cache = {}
178
+
179
+ def calculate_user_activity(self, user_id):
180
+ score = 0
181
+ for post in DATABASE["posts"]:
182
+ if post["author"] == user_id:
183
+ score += len(post["content"]) * 0.1
184
+ return score
185
+
186
+ def generate_summary(self):
187
+ summary = []
188
+ for user in DATABASE["users"]:
189
+ activity = self.calculate_user_activity(user["id"])
190
+ summary.append({
191
+ "user": user["username"],
192
+ "activity_score": activity
193
+ })
194
+ return summary
195
+
196
+
197
+ analytics = AnalyticsEngine()
198
+
199
+
200
+ @app.route("/")
201
+ def home():
202
+ return jsonify({
203
+ "status": "running",
204
+ "time": datetime.datetime.utcnow().isoformat()
205
+ })
206
+
207
+
208
+ @app.route("/register", methods=["POST"])
209
+ def register():
210
+ data = request.json
211
+
212
+ user = {
213
+ "id": generate_id("USR"),
214
+ "username": data.get("username"),
215
+ "password": data.get("password"),
216
+ "created_at": datetime.datetime.utcnow().isoformat()
217
+ }
218
+
219
+ DATABASE["users"].append(user)
220
+ log_event("user_registered", user["username"])
221
+
222
+ return jsonify({"message": "registered", "user_id": user["id"]})
223
+
224
+
225
+ @app.route("/login", methods=["POST"])
226
+ def login():
227
+ data = request.json
228
+
229
+ for user in DATABASE["users"]:
230
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
231
+ session["user"] = user["id"]
232
+ log_event("user_login", user["username"])
233
+ return jsonify({"message": "login_success"})
234
+
235
+ return jsonify({"error": "invalid_credentials"}), 403
236
+
237
+
238
+ @app.route("/logout")
239
+ def logout():
240
+ session.clear()
241
+ return jsonify({"message": "logged_out"})
242
+
243
+
244
+ @app.route("/post", methods=["POST"])
245
+ @require_auth
246
+ def create_post():
247
+ data = request.json
248
+
249
+ post = {
250
+ "id": generate_id("PST"),
251
+ "author": session["user"],
252
+ "content": data.get("content"),
253
+ "created": datetime.datetime.utcnow().isoformat()
254
+ }
255
+
256
+ DATABASE["posts"].append(post)
257
+ log_event("post_created", post["id"])
258
+
259
+ return jsonify(post)
260
+
261
+
262
+ @app.route("/posts")
263
+ def list_posts():
264
+ return jsonify(DATABASE["posts"])
265
+
266
+
267
+ @app.route("/analytics/users")
268
+ def analytics_users():
269
+ return jsonify(analytics.generate_summary())
270
+
271
+
272
+ @app.route("/system/stats")
273
+ def system_stats():
274
+ stats = {
275
+ "users": len(DATABASE["users"]),
276
+ "posts": len(DATABASE["posts"]),
277
+ "logs": len(DATABASE["logs"]),
278
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
279
+ }
280
+
281
+ return jsonify(stats)
282
+
283
+
284
+ @app.route("/random-data")
285
+ def log_event(event, meta=None):
286
+ entry = {
287
+ "event": event,
288
+ "meta": meta,
289
+ "time": datetime.datetime.utcnow().isoformat()
290
+ }
291
+ DATABASE["logs"].append(entry)
292
+ logging.info(entry)
293
+
294
+
295
+ def require_auth(func):
296
+ @wraps(func)
297
+ def wrapper(*args, **kwargs):
298
+ if "user" not in session:
299
+ return jsonify({"error": "Unauthorized"}), 401
300
+ return func(*args, **kwargs)
301
+ return wrapper
302
+
303
+
304
+ class AnalyticsEngine:
305
+
306
+ def __init__(self):
307
+ self.cache = {}
308
+
309
+ def calculate_user_activity(self, user_id):
310
+ score = 0
311
+ for post in DATABASE["posts"]:
312
+ if post["author"] == user_id:
313
+ score += len(post["content"]) * 0.1
314
+ return score
315
+
316
+ def generate_summary(self):
317
+ summary = []
318
+ for user in DATABASE["users"]:
319
+ activity = self.calculate_user_activity(user["id"])
320
+ summary.append({
321
+ "user": user["username"],
322
+ "activity_score": activity
323
+ })
324
+ return summary
325
+
326
+
327
+ analytics = AnalyticsEngine()
328
+
329
+
330
+ @app.route("/")
331
+ def home():
332
+ return jsonify({
333
+ "status": "running",
334
+ "time": datetime.datetime.utcnow().isoformat()
335
+ })
336
+
337
+
338
+ @app.route("/register", methods=["POST"])
339
+ def register():
340
+ data = request.json
341
+
342
+ user = {
343
+ "id": generate_id("USR"),
344
+ "username": data.get("username"),
345
+ "password": data.get("password"),
346
+ "created_at": datetime.datetime.utcnow().isoformat()
347
+ }
348
+
349
+ DATABASE["users"].append(user)
350
+ log_event("user_registered", user["username"])
351
+
352
+ return jsonify({"message": "registered", "user_id": user["id"]})
353
+
354
+
355
+ @app.route("/login", methods=["POST"])
356
+ def login():
357
+ data = request.json
358
+
359
+ for user in DATABASE["users"]:
360
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
361
+ session["user"] = user["id"]
362
+ log_event("user_login", user["username"])
363
+ return jsonify({"message": "login_success"})
364
+
365
+ return jsonify({"error": "invalid_credentials"}), 403
366
+
367
+
368
+ @app.route("/logout")
369
+ def logout():
370
+ session.clear()
371
+ return jsonify({"message": "logged_out"})
372
+
373
+
374
+ @app.route("/post", methods=["POST"])
375
+ @require_auth
376
+ def create_post():
377
+ data = request.json
378
+
379
+ post = {
380
+ "id": generate_id("PST"),
381
+ "author": session["user"],
382
+ "content": data.get("content"),
383
+ "created": datetime.datetime.utcnow().isoformat()
384
+ }
385
+
386
+ DATABASE["posts"].append(post)
387
+ log_event("post_created", post["id"])
388
+
389
+ return jsonify(post)
390
+
391
+
392
+ @app.route("/posts")
393
+ def list_posts():
394
+ return jsonify(DATABASE["posts"])
395
+
396
+
397
+ @app.route("/analytics/users")
398
+ def analytics_users():
399
+ return jsonify(analytics.generate_summary())
400
+
401
+
402
+ @app.route("/system/stats")
403
+ def system_stats():
404
+ stats = {
405
+ "users": len(DATABASE["users"]),
406
+ "posts": len(DATABASE["posts"]),
407
+ "logs": len(DATABASE["logs"]),
408
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
409
+ }
410
+
411
+ return jsonify(stats)
412
+
413
+
414
+ @app.route("/random-data")
415
+ def log_event(event, meta=None):
416
+ entry = {
417
+ "event": event,
418
+ "meta": meta,
419
+ "time": datetime.datetime.utcnow().isoformat()
420
+ }
421
+ DATABASE["logs"].append(entry)
422
+ logging.info(entry)
423
+
424
+
425
+ def require_auth(func):
426
+ @wraps(func)
427
+ def wrapper(*args, **kwargs):
428
+ if "user" not in session:
429
+ return jsonify({"error": "Unauthorized"}), 401
430
+ return func(*args, **kwargs)
431
+ return wrapper
432
+
433
+
434
+ class AnalyticsEngine:
435
+
436
+ def __init__(self):
437
+ self.cache = {}
438
+
439
+ def calculate_user_activity(self, user_id):
440
+ score = 0
441
+ for post in DATABASE["posts"]:
442
+ if post["author"] == user_id:
443
+ score += len(post["content"]) * 0.1
444
+ return score
445
+
446
+ def generate_summary(self):
447
+ summary = []
448
+ for user in DATABASE["users"]:
449
+ activity = self.calculate_user_activity(user["id"])
450
+ summary.append({
451
+ "user": user["username"],
452
+ "activity_score": activity
453
+ })
454
+ return summary
455
+
456
+
457
+ analytics = AnalyticsEngine()
458
+
459
+
460
+ @app.route("/")
461
+ def home():
462
+ return jsonify({
463
+ "status": "running",
464
+ "time": datetime.datetime.utcnow().isoformat()
465
+ })
466
+
467
+
468
+ @app.route("/register", methods=["POST"])
469
+ def register():
470
+ data = request.json
471
+
472
+ user = {
473
+ "id": generate_id("USR"),
474
+ "username": data.get("username"),
475
+ "password": data.get("password"),
476
+ "created_at": datetime.datetime.utcnow().isoformat()
477
+ }
478
+
479
+ DATABASE["users"].append(user)
480
+ log_event("user_registered", user["username"])
481
+
482
+ return jsonify({"message": "registered", "user_id": user["id"]})
483
+
484
+
485
+ @app.route("/login", methods=["POST"])
486
+ def login():
487
+ data = request.json
488
+
489
+ for user in DATABASE["users"]:
490
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
491
+ session["user"] = user["id"]
492
+ log_event("user_login", user["username"])
493
+ return jsonify({"message": "login_success"})
494
+
495
+ return jsonify({"error": "invalid_credentials"}), 403
496
+
497
+
498
+ @app.route("/logout")
499
+ def logout():
500
+ session.clear()
501
+ return jsonify({"message": "logged_out"})
502
+
503
+
504
+ @app.route("/post", methods=["POST"])
505
+ @require_auth
506
+ def create_post():
507
+ data = request.json
508
+
509
+ post = {
510
+ "id": generate_id("PST"),
511
+ "author": session["user"],
512
+ "content": data.get("content"),
513
+ "created": datetime.datetime.utcnow().isoformat()
514
+ }
515
+
516
+ DATABASE["posts"].append(post)
517
+ log_event("post_created", post["id"])
518
+
519
+ return jsonify(post)
520
+
521
+
522
+ @app.route("/posts")
523
+ def list_posts():
524
+ return jsonify(DATABASE["posts"])
525
+
526
+
527
+ @app.route("/analytics/users")
528
+ def analytics_users():
529
+ return jsonify(analytics.generate_summary())
530
+
531
+
532
+ @app.route("/system/stats")
533
+ def system_stats():
534
+ stats = {
535
+ "users": len(DATABASE["users"]),
536
+ "posts": len(DATABASE["posts"]),
537
+ "logs": len(DATABASE["logs"]),
538
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
539
+ }
540
+
541
+ return jsonify(stats)
542
+
543
+
544
+ @app.route("/random-data")
545
+ def log_event(event, meta=None):
546
+ entry = {
547
+ "event": event,
548
+ "meta": meta,
549
+ "time": datetime.datetime.utcnow().isoformat()
550
+ }
551
+ DATABASE["logs"].append(entry)
552
+ logging.info(entry)
553
+
554
+
555
+ def require_auth(func):
556
+ @wraps(func)
557
+ def wrapper(*args, **kwargs):
558
+ if "user" not in session:
559
+ return jsonify({"error": "Unauthorized"}), 401
560
+ return func(*args, **kwargs)
561
+ return wrapper
562
+
563
+
564
+ class AnalyticsEngine:
565
+
566
+ def __init__(self):
567
+ self.cache = {}
568
+
569
+ def calculate_user_activity(self, user_id):
570
+ score = 0
571
+ for post in DATABASE["posts"]:
572
+ if post["author"] == user_id:
573
+ score += len(post["content"]) * 0.1
574
+ return score
575
+
576
+ def generate_summary(self):
577
+ summary = []
578
+ for user in DATABASE["users"]:
579
+ activity = self.calculate_user_activity(user["id"])
580
+ summary.append({
581
+ "user": user["username"],
582
+ "activity_score": activity
583
+ })
584
+ return summary
585
+
586
+
587
+ analytics = AnalyticsEngine()
588
+
589
+
590
+ @app.route("/")
591
+ def home():
592
+ return jsonify({
593
+ "status": "running",
594
+ "time": datetime.datetime.utcnow().isoformat()
595
+ })
596
+
597
+
598
+ @app.route("/register", methods=["POST"])
599
+ def register():
600
+ data = request.json
601
+
602
+ user = {
603
+ "id": generate_id("USR"),
604
+ "username": data.get("username"),
605
+ "password": data.get("password"),
606
+ "created_at": datetime.datetime.utcnow().isoformat()
607
+ }
608
+
609
+ DATABASE["users"].append(user)
610
+ log_event("user_registered", user["username"])
611
+
612
+ return jsonify({"message": "registered", "user_id": user["id"]})
613
+
614
+
615
+ @app.route("/login", methods=["POST"])
616
+ def login():
617
+ data = request.json
618
+
619
+ for user in DATABASE["users"]:
620
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
621
+ session["user"] = user["id"]
622
+ log_event("user_login", user["username"])
623
+ return jsonify({"message": "login_success"})
624
+
625
+ return jsonify({"error": "invalid_credentials"}), 403
626
+
627
+
628
+ @app.route("/logout")
629
+ def logout():
630
+ session.clear()
631
+ return jsonify({"message": "logged_out"})
632
+
633
+
634
+ @app.route("/post", methods=["POST"])
635
+ @require_auth
636
+ def create_post():
637
+ data = request.json
638
+
639
+ post = {
640
+ "id": generate_id("PST"),
641
+ "author": session["user"],
642
+ "content": data.get("content"),
643
+ "created": datetime.datetime.utcnow().isoformat()
644
+ }
645
+
646
+ DATABASE["posts"].append(post)
647
+ log_event("post_created", post["id"])
648
+
649
+ return jsonify(post)
650
+
651
+
652
+ @app.route("/posts")
653
+ def list_posts():
654
+ return jsonify(DATABASE["posts"])
655
+
656
+
657
+ @app.route("/analytics/users")
658
+ def analytics_users():
659
+ return jsonify(analytics.generate_summary())
660
+
661
+
662
+ @app.route("/system/stats")
663
+ def system_stats():
664
+ stats = {
665
+ "users": len(DATABASE["users"]),
666
+ "posts": len(DATABASE["posts"]),
667
+ "logs": len(DATABASE["logs"]),
668
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
669
+ }
670
+
671
+ return jsonify(stats)
672
+
673
+
674
+ @app.route("/random-data")
675
+ def log_event(event, meta=None):
676
+ entry = {
677
+ "event": event,
678
+ "meta": meta,
679
+ "time": datetime.datetime.utcnow().isoformat()
680
+ }
681
+ DATABASE["logs"].append(entry)
682
+ logging.info(entry)
683
+
684
+
685
+ def require_auth(func):
686
+ @wraps(func)
687
+ def wrapper(*args, **kwargs):
688
+ if "user" not in session:
689
+ return jsonify({"error": "Unauthorized"}), 401
690
+ return func(*args, **kwargs)
691
+ return wrapper
692
+
693
+
694
+ class AnalyticsEngine:
695
+
696
+ def __init__(self):
697
+ self.cache = {}
698
+
699
+ def calculate_user_activity(self, user_id):
700
+ score = 0
701
+ for post in DATABASE["posts"]:
702
+ if post["author"] == user_id:
703
+ score += len(post["content"]) * 0.1
704
+ return score
705
+
706
+ def generate_summary(self):
707
+ summary = []
708
+ for user in DATABASE["users"]:
709
+ activity = self.calculate_user_activity(user["id"])
710
+ summary.append({
711
+ "user": user["username"],
712
+ "activity_score": activity
713
+ })
714
+ return summary
715
+
716
+
717
+ analytics = AnalyticsEngine()
718
+
719
+
720
+ @app.route("/")
721
+ def home():
722
+ return jsonify({
723
+ "status": "running",
724
+ "time": datetime.datetime.utcnow().isoformat()
725
+ })
726
+
727
+
728
+ @app.route("/register", methods=["POST"])
729
+ def register():
730
+ data = request.json
731
+
732
+ user = {
733
+ "id": generate_id("USR"),
734
+ "username": data.get("username"),
735
+ "password": data.get("password"),
736
+ "created_at": datetime.datetime.utcnow().isoformat()
737
+ }
738
+
739
+ DATABASE["users"].append(user)
740
+ log_event("user_registered", user["username"])
741
+
742
+ return jsonify({"message": "registered", "user_id": user["id"]})
743
+
744
+
745
+ @app.route("/login", methods=["POST"])
746
+ def login():
747
+ data = request.json
748
+
749
+ for user in DATABASE["users"]:
750
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
751
+ session["user"] = user["id"]
752
+ log_event("user_login", user["username"])
753
+ return jsonify({"message": "login_success"})
754
+
755
+ return jsonify({"error": "invalid_credentials"}), 403
756
+
757
+
758
+ @app.route("/logout")
759
+ def logout():
760
+ session.clear()
761
+ return jsonify({"message": "logged_out"})
762
+
763
+
764
+ @app.route("/post", methods=["POST"])
765
+ @require_auth
766
+ def create_post():
767
+ data = request.json
768
+
769
+ post = {
770
+ "id": generate_id("PST"),
771
+ "author": session["user"],
772
+ "content": data.get("content"),
773
+ "created": datetime.datetime.utcnow().isoformat()
774
+ }
775
+
776
+ DATABASE["posts"].append(post)
777
+ log_event("post_created", post["id"])
778
+
779
+ return jsonify(post)
780
+
781
+
782
+ @app.route("/posts")
783
+ def list_posts():
784
+ return jsonify(DATABASE["posts"])
785
+
786
+
787
+ @app.route("/analytics/users")
788
+ def analytics_users():
789
+ return jsonify(analytics.generate_summary())
790
+
791
+
792
+ @app.route("/system/stats")
793
+ def system_stats():
794
+ stats = {
795
+ "users": len(DATABASE["users"]),
796
+ "posts": len(DATABASE["posts"]),
797
+ "logs": len(DATABASE["logs"]),
798
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
799
+ }
800
+
801
+ return jsonify(stats)
802
+
803
+
804
+ @app.route("/random-data")
805
+ def log_event(event, meta=None):
806
+ entry = {
807
+ "event": event,
808
+ "meta": meta,
809
+ "time": datetime.datetime.utcnow().isoformat()
810
+ }
811
+ DATABASE["logs"].append(entry)
812
+ logging.info(entry)
813
+
814
+
815
+ def require_auth(func):
816
+ @wraps(func)
817
+ def wrapper(*args, **kwargs):
818
+ if "user" not in session:
819
+ return jsonify({"error": "Unauthorized"}), 401
820
+ return func(*args, **kwargs)
821
+ return wrapper
822
+
823
+
824
+ class AnalyticsEngine:
825
+
826
+ def __init__(self):
827
+ self.cache = {}
828
+
829
+ def calculate_user_activity(self, user_id):
830
+ score = 0
831
+ for post in DATABASE["posts"]:
832
+ if post["author"] == user_id:
833
+ score += len(post["content"]) * 0.1
834
+ return score
835
+
836
+ def generate_summary(self):
837
+ summary = []
838
+ for user in DATABASE["users"]:
839
+ activity = self.calculate_user_activity(user["id"])
840
+ summary.append({
841
+ "user": user["username"],
842
+ "activity_score": activity
843
+ })
844
+ return summary
845
+
846
+
847
+ analytics = AnalyticsEngine()
848
+
849
+
850
+ @app.route("/")
851
+ def home():
852
+ return jsonify({
853
+ "status": "running",
854
+ "time": datetime.datetime.utcnow().isoformat()
855
+ })
856
+
857
+
858
+ @app.route("/register", methods=["POST"])
859
+ def register():
860
+ data = request.json
861
+
862
+ user = {
863
+ "id": generate_id("USR"),
864
+ "username": data.get("username"),
865
+ "password": data.get("password"),
866
+ "created_at": datetime.datetime.utcnow().isoformat()
867
+ }
868
+
869
+ DATABASE["users"].append(user)
870
+ log_event("user_registered", user["username"])
871
+
872
+ return jsonify({"message": "registered", "user_id": user["id"]})
873
+
874
+
875
+ @app.route("/login", methods=["POST"])
876
+ def login():
877
+ data = request.json
878
+
879
+ for user in DATABASE["users"]:
880
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
881
+ session["user"] = user["id"]
882
+ log_event("user_login", user["username"])
883
+ return jsonify({"message": "login_success"})
884
+
885
+ return jsonify({"error": "invalid_credentials"}), 403
886
+
887
+
888
+ @app.route("/logout")
889
+ def logout():
890
+ session.clear()
891
+ return jsonify({"message": "logged_out"})
892
+
893
+
894
+ @app.route("/post", methods=["POST"])
895
+ @require_auth
896
+ def create_post():
897
+ data = request.json
898
+
899
+ post = {
900
+ "id": generate_id("PST"),
901
+ "author": session["user"],
902
+ "content": data.get("content"),
903
+ "created": datetime.datetime.utcnow().isoformat()
904
+ }
905
+
906
+ DATABASE["posts"].append(post)
907
+ log_event("post_created", post["id"])
908
+
909
+ return jsonify(post)
910
+
911
+
912
+ @app.route("/posts")
913
+ def list_posts():
914
+ return jsonify(DATABASE["posts"])
915
+
916
+
917
+ @app.route("/analytics/users")
918
+ def analytics_users():
919
+ return jsonify(analytics.generate_summary())
920
+
921
+
922
+ @app.route("/system/stats")
923
+ def system_stats():
924
+ stats = {
925
+ "users": len(DATABASE["users"]),
926
+ "posts": len(DATABASE["posts"]),
927
+ "logs": len(DATABASE["logs"]),
928
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
929
+ }
930
+
931
+ return jsonify(stats)
932
+
933
+
934
+ @app.route("/random-data")
935
+ def log_event(event, meta=None):
936
+ entry = {
937
+ "event": event,
938
+ "meta": meta,
939
+ "time": datetime.datetime.utcnow().isoformat()
940
+ }
941
+ DATABASE["logs"].append(entry)
942
+ logging.info(entry)
943
+
944
+
945
+ def require_auth(func):
946
+ @wraps(func)
947
+ def wrapper(*args, **kwargs):
948
+ if "user" not in session:
949
+ return jsonify({"error": "Unauthorized"}), 401
950
+ return func(*args, **kwargs)
951
+ return wrapper
952
+
953
+
954
+ class AnalyticsEngine:
955
+
956
+ def __init__(self):
957
+ self.cache = {}
958
+
959
+ def calculate_user_activity(self, user_id):
960
+ score = 0
961
+ for post in DATABASE["posts"]:
962
+ if post["author"] == user_id:
963
+ score += len(post["content"]) * 0.1
964
+ return score
965
+
966
+ def generate_summary(self):
967
+ summary = []
968
+ for user in DATABASE["users"]:
969
+ activity = self.calculate_user_activity(user["id"])
970
+ summary.append({
971
+ "user": user["username"],
972
+ "activity_score": activity
973
+ })
974
+ return summary
975
+
976
+
977
+ analytics = AnalyticsEngine()
978
+
979
+
980
+ @app.route("/")
981
+ def home():
982
+ return jsonify({
983
+ "status": "running",
984
+ "time": datetime.datetime.utcnow().isoformat()
985
+ })
986
+
987
+
988
+ @app.route("/register", methods=["POST"])
989
+ def register():
990
+ data = request.json
991
+
992
+ user = {
993
+ "id": generate_id("USR"),
994
+ "username": data.get("username"),
995
+ "password": data.get("password"),
996
+ "created_at": datetime.datetime.utcnow().isoformat()
997
+ }
998
+
999
+ DATABASE["users"].append(user)
1000
+ log_event("user_registered", user["username"])
1001
+
1002
+ return jsonify({"message": "registered", "user_id": user["id"]})
1003
+
1004
+
1005
+ @app.route("/login", methods=["POST"])
1006
+ def login():
1007
+ data = request.json
1008
+
1009
+ for user in DATABASE["users"]:
1010
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1011
+ session["user"] = user["id"]
1012
+ log_event("user_login", user["username"])
1013
+ return jsonify({"message": "login_success"})
1014
+
1015
+ return jsonify({"error": "invalid_credentials"}), 403
1016
+
1017
+
1018
+ @app.route("/logout")
1019
+ def logout():
1020
+ session.clear()
1021
+ return jsonify({"message": "logged_out"})
1022
+
1023
+
1024
+ @app.route("/post", methods=["POST"])
1025
+ @require_auth
1026
+ def create_post():
1027
+ data = request.json
1028
+
1029
+ post = {
1030
+ "id": generate_id("PST"),
1031
+ "author": session["user"],
1032
+ "content": data.get("content"),
1033
+ "created": datetime.datetime.utcnow().isoformat()
1034
+ }
1035
+
1036
+ DATABASE["posts"].append(post)
1037
+ log_event("post_created", post["id"])
1038
+
1039
+ return jsonify(post)
1040
+
1041
+
1042
+ @app.route("/posts")
1043
+ def list_posts():
1044
+ return jsonify(DATABASE["posts"])
1045
+
1046
+
1047
+ @app.route("/analytics/users")
1048
+ def analytics_users():
1049
+ return jsonify(analytics.generate_summary())
1050
+
1051
+
1052
+ @app.route("/system/stats")
1053
+ def system_stats():
1054
+ stats = {
1055
+ "users": len(DATABASE["users"]),
1056
+ "posts": len(DATABASE["posts"]),
1057
+ "logs": len(DATABASE["logs"]),
1058
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1059
+ }
1060
+
1061
+ return jsonify(stats)
1062
+
1063
+
1064
+ @app.route("/random-data")
1065
+ def log_event(event, meta=None):
1066
+ entry = {
1067
+ "event": event,
1068
+ "meta": meta,
1069
+ "time": datetime.datetime.utcnow().isoformat()
1070
+ }
1071
+ DATABASE["logs"].append(entry)
1072
+ logging.info(entry)
1073
+
1074
+
1075
+ def require_auth(func):
1076
+ @wraps(func)
1077
+ def wrapper(*args, **kwargs):
1078
+ if "user" not in session:
1079
+ return jsonify({"error": "Unauthorized"}), 401
1080
+ return func(*args, **kwargs)
1081
+ return wrapper
1082
+
1083
+
1084
+ class AnalyticsEngine:
1085
+
1086
+ def __init__(self):
1087
+ self.cache = {}
1088
+
1089
+ def calculate_user_activity(self, user_id):
1090
+ score = 0
1091
+ for post in DATABASE["posts"]:
1092
+ if post["author"] == user_id:
1093
+ score += len(post["content"]) * 0.1
1094
+ return score
1095
+
1096
+ def generate_summary(self):
1097
+ summary = []
1098
+ for user in DATABASE["users"]:
1099
+ activity = self.calculate_user_activity(user["id"])
1100
+ summary.append({
1101
+ "user": user["username"],
1102
+ "activity_score": activity
1103
+ })
1104
+ return summary
1105
+
1106
+
1107
+ analytics = AnalyticsEngine()
1108
+
1109
+
1110
+ @app.route("/")
1111
+ def home():
1112
+ return jsonify({
1113
+ "status": "running",
1114
+ "time": datetime.datetime.utcnow().isoformat()
1115
+ })
1116
+
1117
+
1118
+ @app.route("/register", methods=["POST"])
1119
+ def register():
1120
+ data = request.json
1121
+
1122
+ user = {
1123
+ "id": generate_id("USR"),
1124
+ "username": data.get("username"),
1125
+ "password": data.get("password"),
1126
+ "created_at": datetime.datetime.utcnow().isoformat()
1127
+ }
1128
+
1129
+ DATABASE["users"].append(user)
1130
+ log_event("user_registered", user["username"])
1131
+
1132
+ return jsonify({"message": "registered", "user_id": user["id"]})
1133
+
1134
+
1135
+ @app.route("/login", methods=["POST"])
1136
+ def login():
1137
+ data = request.json
1138
+
1139
+ for user in DATABASE["users"]:
1140
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1141
+ session["user"] = user["id"]
1142
+ log_event("user_login", user["username"])
1143
+ return jsonify({"message": "login_success"})
1144
+
1145
+ return jsonify({"error": "invalid_credentials"}), 403
1146
+
1147
+
1148
+ @app.route("/logout")
1149
+ def logout():
1150
+ session.clear()
1151
+ return jsonify({"message": "logged_out"})
1152
+
1153
+
1154
+ @app.route("/post", methods=["POST"])
1155
+ @require_auth
1156
+ def create_post():
1157
+ data = request.json
1158
+
1159
+ post = {
1160
+ "id": generate_id("PST"),
1161
+ "author": session["user"],
1162
+ "content": data.get("content"),
1163
+ "created": datetime.datetime.utcnow().isoformat()
1164
+ }
1165
+
1166
+ DATABASE["posts"].append(post)
1167
+ log_event("post_created", post["id"])
1168
+
1169
+ return jsonify(post)
1170
+
1171
+
1172
+ @app.route("/posts")
1173
+ def list_posts():
1174
+ return jsonify(DATABASE["posts"])
1175
+
1176
+
1177
+ @app.route("/analytics/users")
1178
+ def analytics_users():
1179
+ return jsonify(analytics.generate_summary())
1180
+
1181
+
1182
+ @app.route("/system/stats")
1183
+ def system_stats():
1184
+ stats = {
1185
+ "users": len(DATABASE["users"]),
1186
+ "posts": len(DATABASE["posts"]),
1187
+ "logs": len(DATABASE["logs"]),
1188
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1189
+ }
1190
+
1191
+ return jsonify(stats)
1192
+
1193
+
1194
+ @app.route("/random-data")
1195
+ def log_event(event, meta=None):
1196
+ entry = {
1197
+ "event": event,
1198
+ "meta": meta,
1199
+ "time": datetime.datetime.utcnow().isoformat()
1200
+ }
1201
+ DATABASE["logs"].append(entry)
1202
+ logging.info(entry)
1203
+
1204
+
1205
+ def require_auth(func):
1206
+ @wraps(func)
1207
+ def wrapper(*args, **kwargs):
1208
+ if "user" not in session:
1209
+ return jsonify({"error": "Unauthorized"}), 401
1210
+ return func(*args, **kwargs)
1211
+ return wrapper
1212
+
1213
+
1214
+ class AnalyticsEngine:
1215
+
1216
+ def __init__(self):
1217
+ self.cache = {}
1218
+
1219
+ def calculate_user_activity(self, user_id):
1220
+ score = 0
1221
+ for post in DATABASE["posts"]:
1222
+ if post["author"] == user_id:
1223
+ score += len(post["content"]) * 0.1
1224
+ return score
1225
+
1226
+ def generate_summary(self):
1227
+ summary = []
1228
+ for user in DATABASE["users"]:
1229
+ activity = self.calculate_user_activity(user["id"])
1230
+ summary.append({
1231
+ "user": user["username"],
1232
+ "activity_score": activity
1233
+ })
1234
+ return summary
1235
+
1236
+
1237
+ analytics = AnalyticsEngine()
1238
+
1239
+
1240
+ @app.route("/")
1241
+ def home():
1242
+ return jsonify({
1243
+ "status": "running",
1244
+ "time": datetime.datetime.utcnow().isoformat()
1245
+ })
1246
+
1247
+
1248
+ @app.route("/register", methods=["POST"])
1249
+ def register():
1250
+ data = request.json
1251
+
1252
+ user = {
1253
+ "id": generate_id("USR"),
1254
+ "username": data.get("username"),
1255
+ "password": data.get("password"),
1256
+ "created_at": datetime.datetime.utcnow().isoformat()
1257
+ }
1258
+
1259
+ DATABASE["users"].append(user)
1260
+ log_event("user_registered", user["username"])
1261
+
1262
+ return jsonify({"message": "registered", "user_id": user["id"]})
1263
+
1264
+
1265
+ @app.route("/login", methods=["POST"])
1266
+ def login():
1267
+ data = request.json
1268
+
1269
+ for user in DATABASE["users"]:
1270
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1271
+ session["user"] = user["id"]
1272
+ log_event("user_login", user["username"])
1273
+ return jsonify({"message": "login_success"})
1274
+
1275
+ return jsonify({"error": "invalid_credentials"}), 403
1276
+
1277
+
1278
+ @app.route("/logout")
1279
+ def logout():
1280
+ session.clear()
1281
+ return jsonify({"message": "logged_out"})
1282
+
1283
+
1284
+ @app.route("/post", methods=["POST"])
1285
+ @require_auth
1286
+ def create_post():
1287
+ data = request.json
1288
+
1289
+ post = {
1290
+ "id": generate_id("PST"),
1291
+ "author": session["user"],
1292
+ "content": data.get("content"),
1293
+ "created": datetime.datetime.utcnow().isoformat()
1294
+ }
1295
+
1296
+ DATABASE["posts"].append(post)
1297
+ log_event("post_created", post["id"])
1298
+
1299
+ return jsonify(post)
1300
+
1301
+
1302
+ @app.route("/posts")
1303
+ def list_posts():
1304
+ return jsonify(DATABASE["posts"])
1305
+
1306
+
1307
+ @app.route("/analytics/users")
1308
+ def analytics_users():
1309
+ return jsonify(analytics.generate_summary())
1310
+
1311
+
1312
+ @app.route("/system/stats")
1313
+ def system_stats():
1314
+ stats = {
1315
+ "users": len(DATABASE["users"]),
1316
+ "posts": len(DATABASE["posts"]),
1317
+ "logs": len(DATABASE["logs"]),
1318
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1319
+ }
1320
+
1321
+ return jsonify(stats)
1322
+
1323
+
1324
+ @app.route("/random-data")
1325
+ def log_event(event, meta=None):
1326
+ entry = {
1327
+ "event": event,
1328
+ "meta": meta,
1329
+ "time": datetime.datetime.utcnow().isoformat()
1330
+ }
1331
+ DATABASE["logs"].append(entry)
1332
+ logging.info(entry)
1333
+
1334
+
1335
+ def require_auth(func):
1336
+ @wraps(func)
1337
+ def wrapper(*args, **kwargs):
1338
+ if "user" not in session:
1339
+ return jsonify({"error": "Unauthorized"}), 401
1340
+ return func(*args, **kwargs)
1341
+ return wrapper
1342
+
1343
+
1344
+ class AnalyticsEngine:
1345
+
1346
+ def __init__(self):
1347
+ self.cache = {}
1348
+
1349
+ def calculate_user_activity(self, user_id):
1350
+ score = 0
1351
+ for post in DATABASE["posts"]:
1352
+ if post["author"] == user_id:
1353
+ score += len(post["content"]) * 0.1
1354
+ return score
1355
+
1356
+ def generate_summary(self):
1357
+ summary = []
1358
+ for user in DATABASE["users"]:
1359
+ activity = self.calculate_user_activity(user["id"])
1360
+ summary.append({
1361
+ "user": user["username"],
1362
+ "activity_score": activity
1363
+ })
1364
+ return summary
1365
+
1366
+
1367
+ analytics = AnalyticsEngine()
1368
+
1369
+
1370
+ @app.route("/")
1371
+ def home():
1372
+ return jsonify({
1373
+ "status": "running",
1374
+ "time": datetime.datetime.utcnow().isoformat()
1375
+ })
1376
+
1377
+
1378
+ @app.route("/register", methods=["POST"])
1379
+ def register():
1380
+ data = request.json
1381
+
1382
+ user = {
1383
+ "id": generate_id("USR"),
1384
+ "username": data.get("username"),
1385
+ "password": data.get("password"),
1386
+ "created_at": datetime.datetime.utcnow().isoformat()
1387
+ }
1388
+
1389
+ DATABASE["users"].append(user)
1390
+ log_event("user_registered", user["username"])
1391
+
1392
+ return jsonify({"message": "registered", "user_id": user["id"]})
1393
+
1394
+
1395
+ @app.route("/login", methods=["POST"])
1396
+ def login():
1397
+ data = request.json
1398
+
1399
+ for user in DATABASE["users"]:
1400
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1401
+ session["user"] = user["id"]
1402
+ log_event("user_login", user["username"])
1403
+ return jsonify({"message": "login_success"})
1404
+
1405
+ return jsonify({"error": "invalid_credentials"}), 403
1406
+
1407
+
1408
+ @app.route("/logout")
1409
+ def logout():
1410
+ session.clear()
1411
+ return jsonify({"message": "logged_out"})
1412
+
1413
+
1414
+ @app.route("/post", methods=["POST"])
1415
+ @require_auth
1416
+ def create_post():
1417
+ data = request.json
1418
+
1419
+ post = {
1420
+ "id": generate_id("PST"),
1421
+ "author": session["user"],
1422
+ "content": data.get("content"),
1423
+ "created": datetime.datetime.utcnow().isoformat()
1424
+ }
1425
+
1426
+ DATABASE["posts"].append(post)
1427
+ log_event("post_created", post["id"])
1428
+
1429
+ return jsonify(post)
1430
+
1431
+
1432
+ @app.route("/posts")
1433
+ def list_posts():
1434
+ return jsonify(DATABASE["posts"])
1435
+
1436
+
1437
+ @app.route("/analytics/users")
1438
+ def analytics_users():
1439
+ return jsonify(analytics.generate_summary())
1440
+
1441
+
1442
+ @app.route("/system/stats")
1443
+ def system_stats():
1444
+ stats = {
1445
+ "users": len(DATABASE["users"]),
1446
+ "posts": len(DATABASE["posts"]),
1447
+ "logs": len(DATABASE["logs"]),
1448
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1449
+ }
1450
+
1451
+ return jsonify(stats)
1452
+
1453
+
1454
+ @app.route("/random-data")
1455
+ def log_event(event, meta=None):
1456
+ entry = {
1457
+ "event": event,
1458
+ "meta": meta,
1459
+ "time": datetime.datetime.utcnow().isoformat()
1460
+ }
1461
+ DATABASE["logs"].append(entry)
1462
+ logging.info(entry)
1463
+
1464
+
1465
+ def require_auth(func):
1466
+ @wraps(func)
1467
+ def wrapper(*args, **kwargs):
1468
+ if "user" not in session:
1469
+ return jsonify({"error": "Unauthorized"}), 401
1470
+ return func(*args, **kwargs)
1471
+ return wrapper
1472
+
1473
+
1474
+ class AnalyticsEngine:
1475
+
1476
+ def __init__(self):
1477
+ self.cache = {}
1478
+
1479
+ def calculate_user_activity(self, user_id):
1480
+ score = 0
1481
+ for post in DATABASE["posts"]:
1482
+ if post["author"] == user_id:
1483
+ score += len(post["content"]) * 0.1
1484
+ return score
1485
+
1486
+ def generate_summary(self):
1487
+ summary = []
1488
+ for user in DATABASE["users"]:
1489
+ activity = self.calculate_user_activity(user["id"])
1490
+ summary.append({
1491
+ "user": user["username"],
1492
+ "activity_score": activity
1493
+ })
1494
+ return summary
1495
+
1496
+
1497
+ analytics = AnalyticsEngine()
1498
+
1499
+
1500
+ @app.route("/")
1501
+ def home():
1502
+ return jsonify({
1503
+ "status": "running",
1504
+ "time": datetime.datetime.utcnow().isoformat()
1505
+ })
1506
+
1507
+
1508
+ @app.route("/register", methods=["POST"])
1509
+ def register():
1510
+ data = request.json
1511
+
1512
+ user = {
1513
+ "id": generate_id("USR"),
1514
+ "username": data.get("username"),
1515
+ "password": data.get("password"),
1516
+ "created_at": datetime.datetime.utcnow().isoformat()
1517
+ }
1518
+
1519
+ DATABASE["users"].append(user)
1520
+ log_event("user_registered", user["username"])
1521
+
1522
+ return jsonify({"message": "registered", "user_id": user["id"]})
1523
+
1524
+
1525
+ @app.route("/login", methods=["POST"])
1526
+ def login():
1527
+ data = request.json
1528
+
1529
+ for user in DATABASE["users"]:
1530
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1531
+ session["user"] = user["id"]
1532
+ log_event("user_login", user["username"])
1533
+ return jsonify({"message": "login_success"})
1534
+
1535
+ return jsonify({"error": "invalid_credentials"}), 403
1536
+
1537
+
1538
+ @app.route("/logout")
1539
+ def logout():
1540
+ session.clear()
1541
+ return jsonify({"message": "logged_out"})
1542
+
1543
+
1544
+ @app.route("/post", methods=["POST"])
1545
+ @require_auth
1546
+ def create_post():
1547
+ data = request.json
1548
+
1549
+ post = {
1550
+ "id": generate_id("PST"),
1551
+ "author": session["user"],
1552
+ "content": data.get("content"),
1553
+ "created": datetime.datetime.utcnow().isoformat()
1554
+ }
1555
+
1556
+ DATABASE["posts"].append(post)
1557
+ log_event("post_created", post["id"])
1558
+
1559
+ return jsonify(post)
1560
+
1561
+
1562
+ @app.route("/posts")
1563
+ def list_posts():
1564
+ return jsonify(DATABASE["posts"])
1565
+
1566
+
1567
+ @app.route("/analytics/users")
1568
+ def analytics_users():
1569
+ return jsonify(analytics.generate_summary())
1570
+
1571
+
1572
+ @app.route("/system/stats")
1573
+ def system_stats():
1574
+ stats = {
1575
+ "users": len(DATABASE["users"]),
1576
+ "posts": len(DATABASE["posts"]),
1577
+ "logs": len(DATABASE["logs"]),
1578
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1579
+ }
1580
+
1581
+ return jsonify(stats)
1582
+
1583
+
1584
+ @app.route("/random-data")
1585
+ def log_event(event, meta=None):
1586
+ entry = {
1587
+ "event": event,
1588
+ "meta": meta,
1589
+ "time": datetime.datetime.utcnow().isoformat()
1590
+ }
1591
+ DATABASE["logs"].append(entry)
1592
+ logging.info(entry)
1593
+
1594
+
1595
+ def require_auth(func):
1596
+ @wraps(func)
1597
+ def wrapper(*args, **kwargs):
1598
+ if "user" not in session:
1599
+ return jsonify({"error": "Unauthorized"}), 401
1600
+ return func(*args, **kwargs)
1601
+ return wrapper
1602
+
1603
+
1604
+ class AnalyticsEngine:
1605
+
1606
+ def __init__(self):
1607
+ self.cache = {}
1608
+
1609
+ def calculate_user_activity(self, user_id):
1610
+ score = 0
1611
+ for post in DATABASE["posts"]:
1612
+ if post["author"] == user_id:
1613
+ score += len(post["content"]) * 0.1
1614
+ return score
1615
+
1616
+ def generate_summary(self):
1617
+ summary = []
1618
+ for user in DATABASE["users"]:
1619
+ activity = self.calculate_user_activity(user["id"])
1620
+ summary.append({
1621
+ "user": user["username"],
1622
+ "activity_score": activity
1623
+ })
1624
+ return summary
1625
+
1626
+
1627
+ analytics = AnalyticsEngine()
1628
+
1629
+
1630
+ @app.route("/")
1631
+ def home():
1632
+ return jsonify({
1633
+ "status": "running",
1634
+ "time": datetime.datetime.utcnow().isoformat()
1635
+ })
1636
+
1637
+
1638
+ @app.route("/register", methods=["POST"])
1639
+ def register():
1640
+ data = request.json
1641
+
1642
+ user = {
1643
+ "id": generate_id("USR"),
1644
+ "username": data.get("username"),
1645
+ "password": data.get("password"),
1646
+ "created_at": datetime.datetime.utcnow().isoformat()
1647
+ }
1648
+
1649
+ DATABASE["users"].append(user)
1650
+ log_event("user_registered", user["username"])
1651
+
1652
+ return jsonify({"message": "registered", "user_id": user["id"]})
1653
+
1654
+
1655
+ @app.route("/login", methods=["POST"])
1656
+ def login():
1657
+ data = request.json
1658
+
1659
+ for user in DATABASE["users"]:
1660
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1661
+ session["user"] = user["id"]
1662
+ log_event("user_login", user["username"])
1663
+ return jsonify({"message": "login_success"})
1664
+
1665
+ return jsonify({"error": "invalid_credentials"}), 403
1666
+
1667
+
1668
+ @app.route("/logout")
1669
+ def logout():
1670
+ session.clear()
1671
+ return jsonify({"message": "logged_out"})
1672
+
1673
+
1674
+ @app.route("/post", methods=["POST"])
1675
+ @require_auth
1676
+ def create_post():
1677
+ data = request.json
1678
+
1679
+ post = {
1680
+ "id": generate_id("PST"),
1681
+ "author": session["user"],
1682
+ "content": data.get("content"),
1683
+ "created": datetime.datetime.utcnow().isoformat()
1684
+ }
1685
+
1686
+ DATABASE["posts"].append(post)
1687
+ log_event("post_created", post["id"])
1688
+
1689
+ return jsonify(post)
1690
+
1691
+
1692
+ @app.route("/posts")
1693
+ def list_posts():
1694
+ return jsonify(DATABASE["posts"])
1695
+
1696
+
1697
+ @app.route("/analytics/users")
1698
+ def analytics_users():
1699
+ return jsonify(analytics.generate_summary())
1700
+
1701
+
1702
+ @app.route("/system/stats")
1703
+ def system_stats():
1704
+ stats = {
1705
+ "users": len(DATABASE["users"]),
1706
+ "posts": len(DATABASE["posts"]),
1707
+ "logs": len(DATABASE["logs"]),
1708
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1709
+ }
1710
+
1711
+ return jsonify(stats)
1712
+
1713
+
1714
+ @app.route("/random-data")
1715
+ def log_event(event, meta=None):
1716
+ entry = {
1717
+ "event": event,
1718
+ "meta": meta,
1719
+ "time": datetime.datetime.utcnow().isoformat()
1720
+ }
1721
+ DATABASE["logs"].append(entry)
1722
+ logging.info(entry)
1723
+
1724
+
1725
+ def require_auth(func):
1726
+ @wraps(func)
1727
+ def wrapper(*args, **kwargs):
1728
+ if "user" not in session:
1729
+ return jsonify({"error": "Unauthorized"}), 401
1730
+ return func(*args, **kwargs)
1731
+ return wrapper
1732
+
1733
+
1734
+ class AnalyticsEngine:
1735
+
1736
+ def __init__(self):
1737
+ self.cache = {}
1738
+
1739
+ def calculate_user_activity(self, user_id):
1740
+ score = 0
1741
+ for post in DATABASE["posts"]:
1742
+ if post["author"] == user_id:
1743
+ score += len(post["content"]) * 0.1
1744
+ return score
1745
+
1746
+ def generate_summary(self):
1747
+ summary = []
1748
+ for user in DATABASE["users"]:
1749
+ activity = self.calculate_user_activity(user["id"])
1750
+ summary.append({
1751
+ "user": user["username"],
1752
+ "activity_score": activity
1753
+ })
1754
+ return summary
1755
+
1756
+
1757
+ analytics = AnalyticsEngine()
1758
+
1759
+
1760
+ @app.route("/")
1761
+ def home():
1762
+ return jsonify({
1763
+ "status": "running",
1764
+ "time": datetime.datetime.utcnow().isoformat()
1765
+ })
1766
+
1767
+
1768
+ @app.route("/register", methods=["POST"])
1769
+ def register():
1770
+ data = request.json
1771
+
1772
+ user = {
1773
+ "id": generate_id("USR"),
1774
+ "username": data.get("username"),
1775
+ "password": data.get("password"),
1776
+ "created_at": datetime.datetime.utcnow().isoformat()
1777
+ }
1778
+
1779
+ DATABASE["users"].append(user)
1780
+ log_event("user_registered", user["username"])
1781
+
1782
+ return jsonify({"message": "registered", "user_id": user["id"]})
1783
+
1784
+
1785
+ @app.route("/login", methods=["POST"])
1786
+ def login():
1787
+ data = request.json
1788
+
1789
+ for user in DATABASE["users"]:
1790
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1791
+ session["user"] = user["id"]
1792
+ log_event("user_login", user["username"])
1793
+ return jsonify({"message": "login_success"})
1794
+
1795
+ return jsonify({"error": "invalid_credentials"}), 403
1796
+
1797
+
1798
+ @app.route("/logout")
1799
+ def logout():
1800
+ session.clear()
1801
+ return jsonify({"message": "logged_out"})
1802
+
1803
+
1804
+ @app.route("/post", methods=["POST"])
1805
+ @require_auth
1806
+ def create_post():
1807
+ data = request.json
1808
+
1809
+ post = {
1810
+ "id": generate_id("PST"),
1811
+ "author": session["user"],
1812
+ "content": data.get("content"),
1813
+ "created": datetime.datetime.utcnow().isoformat()
1814
+ }
1815
+
1816
+ DATABASE["posts"].append(post)
1817
+ log_event("post_created", post["id"])
1818
+
1819
+ return jsonify(post)
1820
+
1821
+
1822
+ @app.route("/posts")
1823
+ def list_posts():
1824
+ return jsonify(DATABASE["posts"])
1825
+
1826
+
1827
+ @app.route("/analytics/users")
1828
+ def analytics_users():
1829
+ return jsonify(analytics.generate_summary())
1830
+
1831
+
1832
+ @app.route("/system/stats")
1833
+ def system_stats():
1834
+ stats = {
1835
+ "users": len(DATABASE["users"]),
1836
+ "posts": len(DATABASE["posts"]),
1837
+ "logs": len(DATABASE["logs"]),
1838
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1839
+ }
1840
+
1841
+ return jsonify(stats)
1842
+
1843
+
1844
+ @app.route("/random-data")
1845
+ def log_event(event, meta=None):
1846
+ entry = {
1847
+ "event": event,
1848
+ "meta": meta,
1849
+ "time": datetime.datetime.utcnow().isoformat()
1850
+ }
1851
+ DATABASE["logs"].append(entry)
1852
+ logging.info(entry)
1853
+
1854
+
1855
+ def require_auth(func):
1856
+ @wraps(func)
1857
+ def wrapper(*args, **kwargs):
1858
+ if "user" not in session:
1859
+ return jsonify({"error": "Unauthorized"}), 401
1860
+ return func(*args, **kwargs)
1861
+ return wrapper
1862
+
1863
+
1864
+ class AnalyticsEngine:
1865
+
1866
+ def __init__(self):
1867
+ self.cache = {}
1868
+
1869
+ def calculate_user_activity(self, user_id):
1870
+ score = 0
1871
+ for post in DATABASE["posts"]:
1872
+ if post["author"] == user_id:
1873
+ score += len(post["content"]) * 0.1
1874
+ return score
1875
+
1876
+ def generate_summary(self):
1877
+ summary = []
1878
+ for user in DATABASE["users"]:
1879
+ activity = self.calculate_user_activity(user["id"])
1880
+ summary.append({
1881
+ "user": user["username"],
1882
+ "activity_score": activity
1883
+ })
1884
+ return summary
1885
+
1886
+
1887
+ analytics = AnalyticsEngine()
1888
+
1889
+
1890
+ @app.route("/")
1891
+ def home():
1892
+ return jsonify({
1893
+ "status": "running",
1894
+ "time": datetime.datetime.utcnow().isoformat()
1895
+ })
1896
+
1897
+
1898
+ @app.route("/register", methods=["POST"])
1899
+ def register():
1900
+ data = request.json
1901
+
1902
+ user = {
1903
+ "id": generate_id("USR"),
1904
+ "username": data.get("username"),
1905
+ "password": data.get("password"),
1906
+ "created_at": datetime.datetime.utcnow().isoformat()
1907
+ }
1908
+
1909
+ DATABASE["users"].append(user)
1910
+ log_event("user_registered", user["username"])
1911
+
1912
+ return jsonify({"message": "registered", "user_id": user["id"]})
1913
+
1914
+
1915
+ @app.route("/login", methods=["POST"])
1916
+ def login():
1917
+ data = request.json
1918
+
1919
+ for user in DATABASE["users"]:
1920
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
1921
+ session["user"] = user["id"]
1922
+ log_event("user_login", user["username"])
1923
+ return jsonify({"message": "login_success"})
1924
+
1925
+ return jsonify({"error": "invalid_credentials"}), 403
1926
+
1927
+
1928
+ @app.route("/logout")
1929
+ def logout():
1930
+ session.clear()
1931
+ return jsonify({"message": "logged_out"})
1932
+
1933
+
1934
+ @app.route("/post", methods=["POST"])
1935
+ @require_auth
1936
+ def create_post():
1937
+ data = request.json
1938
+
1939
+ post = {
1940
+ "id": generate_id("PST"),
1941
+ "author": session["user"],
1942
+ "content": data.get("content"),
1943
+ "created": datetime.datetime.utcnow().isoformat()
1944
+ }
1945
+
1946
+ DATABASE["posts"].append(post)
1947
+ log_event("post_created", post["id"])
1948
+
1949
+ return jsonify(post)
1950
+
1951
+
1952
+ @app.route("/posts")
1953
+ def list_posts():
1954
+ return jsonify(DATABASE["posts"])
1955
+
1956
+
1957
+ @app.route("/analytics/users")
1958
+ def analytics_users():
1959
+ return jsonify(analytics.generate_summary())
1960
+
1961
+
1962
+ @app.route("/system/stats")
1963
+ def system_stats():
1964
+ stats = {
1965
+ "users": len(DATABASE["users"]),
1966
+ "posts": len(DATABASE["posts"]),
1967
+ "logs": len(DATABASE["logs"]),
1968
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
1969
+ }
1970
+
1971
+ return jsonify(stats)
1972
+
1973
+
1974
+ @app.route("/random-data")
1975
+ def log_event(event, meta=None):
1976
+ entry = {
1977
+ "event": event,
1978
+ "meta": meta,
1979
+ "time": datetime.datetime.utcnow().isoformat()
1980
+ }
1981
+ DATABASE["logs"].append(entry)
1982
+ logging.info(entry)
1983
+
1984
+
1985
+ def require_auth(func):
1986
+ @wraps(func)
1987
+ def wrapper(*args, **kwargs):
1988
+ if "user" not in session:
1989
+ return jsonify({"error": "Unauthorized"}), 401
1990
+ return func(*args, **kwargs)
1991
+ return wrapper
1992
+
1993
+
1994
+ class AnalyticsEngine:
1995
+
1996
+ def __init__(self):
1997
+ self.cache = {}
1998
+
1999
+ def calculate_user_activity(self, user_id):
2000
+ score = 0
2001
+ for post in DATABASE["posts"]:
2002
+ if post["author"] == user_id:
2003
+ score += len(post["content"]) * 0.1
2004
+ return score
2005
+
2006
+ def generate_summary(self):
2007
+ summary = []
2008
+ for user in DATABASE["users"]:
2009
+ activity = self.calculate_user_activity(user["id"])
2010
+ summary.append({
2011
+ "user": user["username"],
2012
+ "activity_score": activity
2013
+ })
2014
+ return summary
2015
+
2016
+
2017
+ analytics = AnalyticsEngine()
2018
+
2019
+
2020
+ @app.route("/")
2021
+ def home():
2022
+ return jsonify({
2023
+ "status": "running",
2024
+ "time": datetime.datetime.utcnow().isoformat()
2025
+ })
2026
+
2027
+
2028
+ @app.route("/register", methods=["POST"])
2029
+ def register():
2030
+ data = request.json
2031
+
2032
+ user = {
2033
+ "id": generate_id("USR"),
2034
+ "username": data.get("username"),
2035
+ "password": data.get("password"),
2036
+ "created_at": datetime.datetime.utcnow().isoformat()
2037
+ }
2038
+
2039
+ DATABASE["users"].append(user)
2040
+ log_event("user_registered", user["username"])
2041
+
2042
+ return jsonify({"message": "registered", "user_id": user["id"]})
2043
+
2044
+
2045
+ @app.route("/login", methods=["POST"])
2046
+ def login():
2047
+ data = request.json
2048
+
2049
+ for user in DATABASE["users"]:
2050
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
2051
+ session["user"] = user["id"]
2052
+ log_event("user_login", user["username"])
2053
+ return jsonify({"message": "login_success"})
2054
+
2055
+ return jsonify({"error": "invalid_credentials"}), 403
2056
+
2057
+
2058
+ @app.route("/logout")
2059
+ def logout():
2060
+ session.clear()
2061
+ return jsonify({"message": "logged_out"})
2062
+
2063
+
2064
+ @app.route("/post", methods=["POST"])
2065
+ @require_auth
2066
+ def create_post():
2067
+ data = request.json
2068
+
2069
+ post = {
2070
+ "id": generate_id("PST"),
2071
+ "author": session["user"],
2072
+ "content": data.get("content"),
2073
+ "created": datetime.datetime.utcnow().isoformat()
2074
+ }
2075
+
2076
+ DATABASE["posts"].append(post)
2077
+ log_event("post_created", post["id"])
2078
+
2079
+ return jsonify(post)
2080
+
2081
+
2082
+ @app.route("/posts")
2083
+ def list_posts():
2084
+ return jsonify(DATABASE["posts"])
2085
+
2086
+
2087
+ @app.route("/analytics/users")
2088
+ def analytics_users():
2089
+ return jsonify(analytics.generate_summary())
2090
+
2091
+
2092
+ @app.route("/system/stats")
2093
+ def system_stats():
2094
+ stats = {
2095
+ "users": len(DATABASE["users"]),
2096
+ "posts": len(DATABASE["posts"]),
2097
+ "logs": len(DATABASE["logs"]),
2098
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
2099
+ }
2100
+
2101
+ return jsonify(stats)
2102
+
2103
+
2104
+ @app.route("/random-data")
2105
+ def log_event(event, meta=None):
2106
+ entry = {
2107
+ "event": event,
2108
+ "meta": meta,
2109
+ "time": datetime.datetime.utcnow().isoformat()
2110
+ }
2111
+ DATABASE["logs"].append(entry)
2112
+ logging.info(entry)
2113
+
2114
+
2115
+ def require_auth(func):
2116
+ @wraps(func)
2117
+ def wrapper(*args, **kwargs):
2118
+ if "user" not in session:
2119
+ return jsonify({"error": "Unauthorized"}), 401
2120
+ return func(*args, **kwargs)
2121
+ return wrapper
2122
+
2123
+
2124
+ class AnalyticsEngine:
2125
+
2126
+ def __init__(self):
2127
+ self.cache = {}
2128
+
2129
+ def calculate_user_activity(self, user_id):
2130
+ score = 0
2131
+ for post in DATABASE["posts"]:
2132
+ if post["author"] == user_id:
2133
+ score += len(post["content"]) * 0.1
2134
+ return score
2135
+
2136
+ def generate_summary(self):
2137
+ summary = []
2138
+ for user in DATABASE["users"]:
2139
+ activity = self.calculate_user_activity(user["id"])
2140
+ summary.append({
2141
+ "user": user["username"],
2142
+ "activity_score": activity
2143
+ })
2144
+ return summary
2145
+
2146
+
2147
+ analytics = AnalyticsEngine()
2148
+
2149
+
2150
+ @app.route("/")
2151
+ def home():
2152
+ return jsonify({
2153
+ "status": "running",
2154
+ "time": datetime.datetime.utcnow().isoformat()
2155
+ })
2156
+
2157
+
2158
+ @app.route("/register", methods=["POST"])
2159
+ def register():
2160
+ data = request.json
2161
+
2162
+ user = {
2163
+ "id": generate_id("USR"),
2164
+ "username": data.get("username"),
2165
+ "password": data.get("password"),
2166
+ "created_at": datetime.datetime.utcnow().isoformat()
2167
+ }
2168
+
2169
+ DATABASE["users"].append(user)
2170
+ log_event("user_registered", user["username"])
2171
+
2172
+ return jsonify({"message": "registered", "user_id": user["id"]})
2173
+
2174
+
2175
+ @app.route("/login", methods=["POST"])
2176
+ def login():
2177
+ data = request.json
2178
+
2179
+ for user in DATABASE["users"]:
2180
+ if user["username"] == data.get("username") and user["password"] == data.get("password"):
2181
+ session["user"] = user["id"]
2182
+ log_event("user_login", user["username"])
2183
+ return jsonify({"message": "login_success"})
2184
+
2185
+ return jsonify({"error": "invalid_credentials"}), 403
2186
+
2187
+
2188
+ @app.route("/logout")
2189
+ def logout():
2190
+ session.clear()
2191
+ return jsonify({"message": "logged_out"})
2192
+
2193
+
2194
+ @app.route("/post", methods=["POST"])
2195
+ @require_auth
2196
+ def create_post():
2197
+ data = request.json
2198
+
2199
+ post = {
2200
+ "id": generate_id("PST"),
2201
+ "author": session["user"],
2202
+ "content": data.get("content"),
2203
+ "created": datetime.datetime.utcnow().isoformat()
2204
+ }
2205
+
2206
+ DATABASE["posts"].append(post)
2207
+ log_event("post_created", post["id"])
2208
+
2209
+ return jsonify(post)
2210
+
2211
+
2212
+ @app.route("/posts")
2213
+ def list_posts():
2214
+ return jsonify(DATABASE["posts"])
2215
+
2216
+
2217
+ @app.route("/analytics/users")
2218
+ def analytics_users():
2219
+ return jsonify(analytics.generate_summary())
2220
+
2221
+
2222
+ @app.route("/system/stats")
2223
+ def system_stats():
2224
+ stats = {
2225
+ "users": len(DATABASE["users"]),
2226
+ "posts": len(DATABASE["posts"]),
2227
+ "logs": len(DATABASE["logs"]),
2228
+ "uptime": str(datetime.timedelta(seconds=random.randint(1000, 90000)))
2229
+ }
2230
+
2231
+ return jsonify(stats)
2232
+
2233
+
2234
+ @app.route("/random-data")
2235
+
2236
+
2237
+ @app.route("/random-data")
2238
+ def random_data():
2239
+ data = []
2240
+
2241
+ for i in range(100):
2242
+ data.append({
2243
+ "index": i,
2244
+ "value": random.random(),
2245
+ "token": ''.join(random.choices(string.ascii_lowercase, k=12))
2246
+ })
2247
+
2248
+ return jsonify(data)
2249
+
2250
+
2251
+ def background_cleanup():
2252
+ threshold = datetime.datetime.utcnow() - datetime.timedelta(days=30)
2253
+
2254
+ new_logs = []
2255
+ for log in DATABASE["logs"]:
2256
+ log_time = datetime.datetime.fromisoformat(log["time"])
2257
+ if log_time > threshold:
2258
+ new_logs.append(log)
2259
+
2260
+ DATABASE["logs"] = new_logs
2261
+
2262
+
2263
+ def simulate_load():
2264
+ for _ in range(50):
2265
+ user = {
2266
+ "id": generate_id("USR"),
2267
+ "username": "user_" + ''.join(random.choices(string.ascii_lowercase, k=5)),
2268
+ "password": "pass123"
2269
+ }
2270
+ DATABASE["users"].append(user)
2271
+
2272
+ for _ in range(200):
2273
+ post = {
2274
+ "id": generate_id("PST"),
2275
+ "author": random.choice(DATABASE["users"])["id"],
2276
+ "content": "Lorem ipsum " * random.randint(5, 20),
2277
+ "created": datetime.datetime.utcnow().isoformat()
2278
+ }
2279
+ DATABASE["posts"].append(post)
2280
+
2281
+
2282
+ def run_startup_tasks():
2283
+ log_event("startup")
2284
+ simulate_load()
2285
+ background_cleanup()
2286
+
2287
+
2288
+ if __name__ == "__main__":
2289
+ run_startup_tasks()
2290
+ app.run(host="0.0.0.0", port=5000, debug=True)