Spaces:
Sleeping
Sleeping
| # from fastapi import FastAPI, Query, HTTPException | |
| import hmac | |
| import hashlib | |
| from fastapi import FastAPI, Header, HTTPException, Request, Query | |
| from typing import Optional | |
| app = FastAPI() | |
| VERIFY_TOKEN = "lintasmediadanawa" # Replace with your actual verify token | |
| async def handle_webhook( | |
| hub_mode: str = Query(..., alias="hub.mode"), | |
| hub_challenge: int = Query(..., alias="hub.challenge"), | |
| hub_verify_token: str = Query(..., alias="hub.verify_token") | |
| ): | |
| if hub_mode == "subscribe" and hub_verify_token == VERIFY_TOKEN: | |
| return int(hub_challenge) | |
| else: | |
| raise HTTPException(status_code=403, detail="Verification failed") | |
| # @app.post("/webhooks") | |
| # async def handle_event_notifications( | |
| # request: Request, | |
| # x_hub_signature_256: Optional[str] = Header(None) # Header for signature verification | |
| # ): | |
| # # # Read and verify the request body | |
| # # body = await request.body() | |
| # # # Verify the X-Hub-Signature-256 header | |
| # # if not x_hub_signature_256: | |
| # # raise HTTPException(status_code=400, detail="Missing X-Hub-Signature-256 header") | |
| # # # Compute the expected signature | |
| # # expected_signature = ( | |
| # # "sha256=" | |
| # # + hmac.new(VERIFY_TOKEN.encode(), body, hashlib.sha256).hexdigest() | |
| # # ) | |
| # # if not hmac.compare_digest(expected_signature, x_hub_signature_256): | |
| # # raise HTTPException(status_code=403, detail="Signature verification failed") | |
| # print("POST SUCCESS!", request) | |
| # # Parse the JSON payload | |
| # payload = await request.json() | |
| # print("POST SUCCESS!", request) | |
| # print(payload) | |
| # object_type = payload.get("object") | |
| # entries = payload.get("entry", []) | |
| # # Log the received event (or process as needed) | |
| # for entry in entries: | |
| # changes = entry.get("changes", []) | |
| # for change in changes: | |
| # field = change.get("field") | |
| # value = change.get("value") | |
| # # Handle specific fields or values as required | |
| # print(f"Received change for field: {field}, value: {value}") | |
| # # Return a 200 OK response to acknowledge receipt | |
| # return {"status": "ok"} | |
| async def get_all_params(request: Request): | |
| print("POST GET ALL PARAMS!") | |
| # Get headers | |
| headers = dict(request.headers) | |
| # Get query parameters | |
| query_params = dict(request.query_params) | |
| # Get the body (as JSON or raw data) | |
| try: | |
| body = await request.json() # Parse JSON if possible | |
| except Exception: | |
| body = await request.body() # Fall back to raw body if not JSON | |
| # Combine all details | |
| all_params = { | |
| "headers": headers, | |
| "query_params": query_params, | |
| "body": body, | |
| } | |
| # Log the params (optional) | |
| print(all_params) | |
| return all_params | |