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 | |