|
1 | 1 | from apiflask import APIBlueprint |
| 2 | +from flask import g, request |
2 | 3 |
|
3 | | -users_bp = APIBlueprint( |
| 4 | +import uuid |
| 5 | +import schema |
| 6 | +import datetime |
| 7 | + |
| 8 | +users = APIBlueprint( |
4 | 9 | "users_blueprint", |
5 | 10 | __name__, |
6 | 11 | tag={ |
|
10 | 15 | ) |
11 | 16 |
|
12 | 17 |
|
13 | | -@users_bp.route("/api/v1/users") |
| 18 | +@users.before_request |
| 19 | +def assign_request_id(): |
| 20 | + g.request_id = request.headers.get("X-Request-ID", str(uuid.uuid4())) |
| 21 | + |
| 22 | + |
| 23 | +@users.after_request |
| 24 | +def add_request_id_to_response(response): |
| 25 | + response.headers["X-Request-ID"] = g.request_id |
| 26 | + return response |
| 27 | + |
| 28 | + |
| 29 | +@users.route("/", methods=["GET"]) |
| 30 | +@users.output(schema.GenericResponse, status_code=200) |
14 | 31 | def api_get_users(): |
15 | 32 | pass |
| 33 | + |
| 34 | + |
| 35 | +@users.route("/", methods=["POST"]) |
| 36 | +@users.output(schema.GenericResponse, status_code=200) |
| 37 | +def api_post_user(): |
| 38 | + pass |
| 39 | + |
| 40 | + |
| 41 | +@users.route("/token", methods=["POST"]) |
| 42 | +@users.input(schema.Authentication, location="json") |
| 43 | +@users.output(schema.GenericResponse, status_code=200) |
| 44 | +def api_post_users_token(json: dict): |
| 45 | + """ |
| 46 | + Generate an OAuth2.0 token for an existing user. |
| 47 | +
|
| 48 | + Returns: |
| 49 | + - A JSON response with the OAuth2.0 token. |
| 50 | + """ |
| 51 | + |
| 52 | + username = json.get("username") |
| 53 | + password = json.get("password") |
| 54 | + |
| 55 | + token = "" |
| 56 | + |
| 57 | + if token: |
| 58 | + return { |
| 59 | + "url": request.url, |
| 60 | + "success": True, |
| 61 | + "id": g.request_id, |
| 62 | + "version": "v1", |
| 63 | + "timestamp": datetime.datetime.now(), |
| 64 | + "data": {"token": token}, |
| 65 | + }, 200 |
| 66 | + else: |
| 67 | + return { |
| 68 | + "url": request.url, |
| 69 | + "success": False, |
| 70 | + "id": g.request_id, |
| 71 | + "version": "v1", |
| 72 | + "timestamp": datetime.datetime.now(), |
| 73 | + "error": {"name": "Unauthorized", "msg": "Invalid username or password."}, |
| 74 | + }, 401 |
| 75 | + |
| 76 | + |
| 77 | +@users.route("/<user_id>", methods=["GET"]) |
| 78 | +@users.output(schema.GenericResponse, status_code=200) |
| 79 | +def api_get_user(): |
| 80 | + pass |
| 81 | + |
| 82 | + |
| 83 | +@users.route("/<user_id>", methods=["PATCH"]) |
| 84 | +@users.output(schema.GenericResponse, status_code=200) |
| 85 | +def api_patch_user(): |
| 86 | + pass |
| 87 | + |
| 88 | + |
| 89 | +@users.route("/<user_id>", methods=["DELETE"]) |
| 90 | +@users.output(schema.GenericResponse, status_code=200) |
| 91 | +def api_delete_user(): |
| 92 | + pass |
0 commit comments