Initial commit from monorepo
This commit is contained in:
61
kyc_app/status_events.py
Normal file
61
kyc_app/status_events.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import base64
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import urllib.request
|
||||
from datetime import datetime
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _surreal_headers() -> dict[str, str]:
|
||||
headers = {
|
||||
"Content-Type": "text/plain",
|
||||
"Accept": "application/json",
|
||||
}
|
||||
|
||||
ns = os.getenv("SURREALDB_NS", "optovia")
|
||||
db = os.getenv("SURREALDB_DB", "events")
|
||||
user = os.getenv("SURREALDB_USER")
|
||||
password = os.getenv("SURREALDB_PASS")
|
||||
|
||||
headers["NS"] = ns
|
||||
headers["DB"] = db
|
||||
|
||||
if user and password:
|
||||
token = base64.b64encode(f"{user}:{password}".encode("utf-8")).decode("utf-8")
|
||||
headers["Authorization"] = f"Basic {token}"
|
||||
|
||||
return headers
|
||||
|
||||
|
||||
def log_kyc_event(kyc_id: str, user_id: str, event: str, description: str) -> bool:
|
||||
url = os.getenv("SURREALDB_URL")
|
||||
if not url:
|
||||
logger.warning("SURREALDB_URL is not set; skipping KYC event log")
|
||||
return False
|
||||
|
||||
payload = {
|
||||
"kyc_id": kyc_id,
|
||||
"user_id": user_id,
|
||||
"event": event,
|
||||
"description": description,
|
||||
"created_at": datetime.utcnow().isoformat() + "Z",
|
||||
}
|
||||
|
||||
query = f"CREATE kyc_event CONTENT {json.dumps(payload)};"
|
||||
|
||||
req = urllib.request.Request(
|
||||
f"{url.rstrip('/')}/sql",
|
||||
data=query.encode("utf-8"),
|
||||
method="POST",
|
||||
headers=_surreal_headers(),
|
||||
)
|
||||
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=10) as response:
|
||||
response.read()
|
||||
return True
|
||||
except Exception as exc:
|
||||
logger.error("Failed to log KYC event: %s", exc)
|
||||
return False
|
||||
Reference in New Issue
Block a user