feat(integrate api): integrate external auth introspect api
This commit is contained in:
parent
da75ba746c
commit
282d1bcd93
@ -0,0 +1,45 @@
|
|||||||
|
from typing import Dict, Any
|
||||||
|
import httpx
|
||||||
|
from fastapi import HTTPException
|
||||||
|
from common.config.app_settings import app_settings
|
||||||
|
from common.log.log_utils import log_entry_exit_async
|
||||||
|
from common.log.module_logger import ModuleLogger
|
||||||
|
|
||||||
|
|
||||||
|
class ApiKeyIntrospectHandler:
|
||||||
|
"""
|
||||||
|
Freeleaps Auth Service API Key Introspect Handle
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
self.module_logger = ModuleLogger(sender_id=ApiKeyIntrospectHandler.__name__)
|
||||||
|
self.auth_service_base = app_settings.AUTH_SERVICE_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
@log_entry_exit_async
|
||||||
|
async def api_key_introspect(self, api_key: str) -> Dict[str, Any]:
|
||||||
|
"""
|
||||||
|
Introspect API key by calling external auth service
|
||||||
|
|
||||||
|
Args:
|
||||||
|
api_key: The API key to introspect
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Dictionary containing the API key details
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HTTPException: If the external service call fails
|
||||||
|
"""
|
||||||
|
api_url = self.auth_service_base + "introspect_api_key"
|
||||||
|
async with httpx.AsyncClient() as client:
|
||||||
|
response = await client.post(
|
||||||
|
api_url,
|
||||||
|
json={"api_key": api_key}
|
||||||
|
)
|
||||||
|
if response.status_code != 200:
|
||||||
|
error_detail = response.json() if response.content else {"error": "Unknown error"}
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=response.status_code,
|
||||||
|
detail=error_detail
|
||||||
|
)
|
||||||
|
return response.json()
|
||||||
Loading…
Reference in New Issue
Block a user