[add]: bank call auth endpoint

This commit is contained in:
VivianDee
2025-10-27 19:14:59 +01:00
parent 63da7e8292
commit bb85c8f166
2 changed files with 79 additions and 3 deletions
+62 -2
View File
@@ -8,6 +8,45 @@ import logging
class SimbrellaIntegration:
BASE_URL = settings.SIMBRELLA_BASE_URL
ENDPOINT_RAC_CHECKS = settings.SIMBRELLA_ENDPOINT_RAC_CHECKS
HEALTH_ENDPOINT = settings.SIMBRELLA_HEALTH
AUTH_ENDPOINT = settings.BANK_CALL_AUTH_ENDPOINT
_access_token = None # cache token in memory
@staticmethod
def generate_token():
"""
Generate a new access token using the username and password from settings.
"""
url = f"{SimbrellaIntegration.BASE_URL}{SimbrellaIntegration.AUTH_ENDPOINT}"
payload = {
"username": settings.BANK_CALL_USERNAME,
"password": settings.BANK_CALL_PASSWORD,
"grant_type": "password"
}
headers = {"Content-Type": "application/json"}
try:
logger.info(f"Requesting token from {url}")
response = httpx.post(url, json=payload, headers=headers, timeout=10.0)
response.raise_for_status()
data = response.json()
SimbrellaIntegration._access_token = data.get("access_token")
if not SimbrellaIntegration._access_token:
raise Exception("Access token not found in response")
logger.info("Successfully retrieved access token")
return SimbrellaIntegration._access_token
except Exception as e:
logger.error(f"Token generation failed: {str(e)}", exc_info=True)
raise Exception(f"Token generation failed: {str(e)}")
@staticmethod
def rac_check(customer_id, account_id, transaction_id):
@@ -28,8 +67,7 @@ class SimbrellaIntegration:
headers = {
"Content-Type": "application/json",
"x-api-key": f"{settings.VALID_API_KEY}",
"App-Id": f"{settings.VALID_APP_ID}",
"Authorization": f"Bearer {SimbrellaIntegration._access_token}"
}
try:
@@ -42,4 +80,26 @@ class SimbrellaIntegration:
except Exception as e:
logger.error(f"RACCheck API call failed: {str(e)}", exc_info=True)
raise Exception(f"RACCheck API call failed: {str(e)}")
@staticmethod
def health_check():
"""
Health check for Simbrella Service
"""
url = f"{SimbrellaIntegration.BASE_URL}/{SimbrellaIntegration.HEALTH_ENDPOINT}"
logger.info(f"Simbrella Health Check URL: {url}")
try:
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {SimbrellaIntegration._access_token}"
}
response = httpx.get(url, headers=headers, timeout=10.0)
logger.info(f"Simbrella Health Check Response: {response.text}")
return response
except Exception as e:
logger.error(f"Simbrella Health Check API call failed: {str(e)}", exc_info=True)
raise Exception(f"Simbrella Health Check API call failed: {str(e)}")