# 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 @app.get("/webhooks") 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"} @app.post("/webhooks") 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