File size: 1,476 Bytes
03b34b8 a2a0a3e 03b34b8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import urllib.parse
from utils.meldrx import MeldRxAPI
import os
def extract_code_from_url(url: str) -> str:
"""Extracts the 'code' parameter from a given URL."""
parsed_url = urllib.parse.urlparse(url)
query_params = urllib.parse.parse_qs(parsed_url.query)
return query_params.get("code", [""])[0] # Return the first code or empty string if not found
class CallbackManager:
def __init__(self, redirect_uri: str, client_secret: str = None):
client_id = os.getenv("APPID")
if not client_id:
raise ValueError("APPID environment variable not set.")
workspace_id = os.getenv("WORKSPACE_URL")
if not workspace_id:
raise ValueError("WORKSPACE_URL environment variable not set.")
self.api = MeldRxAPI(client_id, client_secret, workspace_id, redirect_uri)
self.auth_code = None
self.access_token = None
def handle_callback(self, callback_url: str) -> str:
"""Handles the callback URL and extracts the code automatically."""
self.auth_code = extract_code_from_url(callback_url)
if not self.auth_code:
return "No authentication code found in URL."
if self.api.authenticate_with_code(self.auth_code):
self.access_token = self.api.access_token
return f"Authentication successful! Access Token: {self.access_token[:10]}... (truncated)"
return "Authentication failed. Please check the authorization code." |