From 1b71e5ee6d623d48bf19433247665d63a47000d6 Mon Sep 17 00:00:00 2001 From: QuangMinh_123 Date: Tue, 2 Dec 2025 07:48:20 +0000 Subject: [PATCH] Admin_Avatar_Done --- ...l-admin_avatar-insert-update-delete-get.py | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 apps/ailbl-admin_avatar-insert-update-delete-get.py diff --git a/apps/ailbl-admin_avatar-insert-update-delete-get.py b/apps/ailbl-admin_avatar-insert-update-delete-get.py new file mode 100644 index 0000000..7f36a4a --- /dev/null +++ b/apps/ailbl-admin_avatar-insert-update-delete-get.py @@ -0,0 +1,89 @@ +import crud +from flask import jsonify, request + +ALLOWED_IMAGE_TYPES = {"image/jpeg", "image/png", "image/gif", "image/webp"} + + +def main(): + """ + ```fission + { + "name": "avatar-admin-get-insert-delete-put", + "http_triggers": { + "avatar-admin-get-insert-delete-put-http": { + "url": "/ailbl/admin/avatars", + "methods": ["PUT", "POST", "DELETE", "GET"] + } + } + } + ``` + """ + try: + if request.method == "PUT": + return make_update_avatar_request() + elif request.method == "DELETE": + return make_delete_avatar_request() + elif request.method == "POST": + return make_insert_request() + elif request.method == "GET": + return make_get_avatar_request() + else: + return {"error": "Method not allow"}, 405 + except Exception as ex: + return jsonify({"error": str(ex)}), 500 + + +def make_insert_request(): + try: + user_id = request.headers.get("X-User") + file = request.files.get("avatar") + if not user_id or not file: + return jsonify({"error": "user_id or file is required"}), 400 + if file.mimetype not in ALLOWED_IMAGE_TYPES: + return jsonify( + {"error": "Invalid file type. Only JPG, PNG, GIF, WEBP are allowed."} + ), 400 + response, status = crud.update_or_create_avatar(user_id, file) + return jsonify(response), status + except Exception as e: + return jsonify({"error": str(e)}), 500 + + +def make_get_avatar_request(): + try: + user_id = request.headers.get("X-User") + if not user_id: + return jsonify({"error": "user_id is required"}), 400 + + return crud.get_avatar_url(user_id) + except Exception as e: + return jsonify({"error": str(e)}), 500 + + +def make_delete_avatar_request(): + try: + user_id = request.headers.get("X-User") + if not user_id: + return jsonify({"error": "user_id is required"}), 400 + + response, status = crud.delete_avatar(user_id) + return jsonify(response), status + except Exception as e: + return jsonify({"error": str(e)}), 500 + + +def make_update_avatar_request(): + try: + user_id = request.headers.get("X-User") + file = request.files.get("avatar") + if not user_id or not file: + return jsonify({"error": "user_id or file is required"}), 400 + if file.mimetype not in ALLOWED_IMAGE_TYPES: + return jsonify( + {"error": "Invalid file type. Only JPG, PNG, GIF, WEBP are allowed."} + ), 400 + + response, status = crud.update_or_create_avatar(user_id, file) + return jsonify(response), status + except Exception as e: + return jsonify({"error": str(e)}), 500