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