import crud from flask import jsonify, request from filters import PhonePage from helpers import CORS_HEADERS from validators import validate_phone_number def main(): """ ```fission { "name": "phonenumbers-users-get-insert", "http_triggers": { "phonenumbers-users-get-insert-http": { "url": "/ailbl/users/phones", "methods": ["POST", "GET"] } } } ``` """ try: if request.method == "POST": return make_insert_request() elif request.method == "GET": return make_get_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") # Lay user_id tu header X-User if not user_id: return jsonify({"error": "user_id or file is required"}), 400, CORS_HEADERS data = request.get_json() if not data: return jsonify({"error": "phone_number is required"}), 400, CORS_HEADERS phone_number = data.get("phone_number") if not validate_phone_number(phone_number): return jsonify({"error": "Invalid phone number"}), 400, CORS_HEADERS if crud.exists_phone(phone_number, user_id): return jsonify({"error": "Phone is exists"}), 404 response, status, headers = crud.create_phone(user_id, data) return jsonify(response) except Exception as e: return jsonify({"error": str(e)}), 500 def make_get_request(): try: user_id = request.headers.get("X-User") if not user_id: return jsonify({"error": "user_id is required"}), 400, CORS_HEADERS # Lấy tham số filter và phân trang từ request # Sử dụng default_factory để lấy filter và paging paging = PhonePage.from_request_queries() print(paging) response = crud.filter_phone(user_id, paging) # Kiểm tra xem response có dữ liệu hay không if not response[0]: # Nếu không có dữ liệu return jsonify({"message": "No phone numbers found"}), 404, CORS_HEADERS return jsonify({ "data": response[0], # Dữ liệu (danh sách các số điện thoại) "status": response[1], # Mã trạng thái HTTP (200) "headers": response[2] # Headers CORS }), response[1], response[2] return jsonify(response), 200, CORS_HEADERS except Exception as e: return jsonify({"error": str(e)}), 500