[add]: token expiry
This commit is contained in:
@@ -1,8 +1,7 @@
|
|||||||
import httpx
|
import httpx
|
||||||
import json
|
import time
|
||||||
from app.utils.logger import logger
|
from app.utils.logger import logger
|
||||||
from app.config import settings
|
from app.config import settings
|
||||||
import logging
|
|
||||||
|
|
||||||
|
|
||||||
class SimbrellaIntegration:
|
class SimbrellaIntegration:
|
||||||
@@ -12,6 +11,7 @@ class SimbrellaIntegration:
|
|||||||
AUTH_ENDPOINT = settings.BANK_CALL_AUTH_ENDPOINT
|
AUTH_ENDPOINT = settings.BANK_CALL_AUTH_ENDPOINT
|
||||||
|
|
||||||
_access_token = None # cache token in memory
|
_access_token = None # cache token in memory
|
||||||
|
_token_expiry = 0
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def generate_token():
|
def generate_token():
|
||||||
@@ -35,7 +35,10 @@ class SimbrellaIntegration:
|
|||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
data = response.json()
|
data = response.json()
|
||||||
|
expires_in = data.get("expires_in", 1800)
|
||||||
|
|
||||||
SimbrellaIntegration._access_token = data.get("access_token")
|
SimbrellaIntegration._access_token = data.get("access_token")
|
||||||
|
SimbrellaIntegration._token_expiry = time.time() + expires_in - 60
|
||||||
|
|
||||||
if not SimbrellaIntegration._access_token:
|
if not SimbrellaIntegration._access_token:
|
||||||
raise Exception("Access token not found in response")
|
raise Exception("Access token not found in response")
|
||||||
@@ -47,6 +50,14 @@ class SimbrellaIntegration:
|
|||||||
logger.error(f"Token generation failed: {str(e)}", exc_info=True)
|
logger.error(f"Token generation failed: {str(e)}", exc_info=True)
|
||||||
raise Exception(f"Token generation failed: {str(e)}")
|
raise Exception(f"Token generation failed: {str(e)}")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_token():
|
||||||
|
"""
|
||||||
|
Return a valid token, refreshing if expired or missing
|
||||||
|
"""
|
||||||
|
if not SimbrellaIntegration._access_token or time.time() >= SimbrellaIntegration._token_expiry:
|
||||||
|
return SimbrellaIntegration.generate_token()
|
||||||
|
return SimbrellaIntegration._access_token
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def rac_check(customer_id, account_id, transaction_id):
|
def rac_check(customer_id, account_id, transaction_id):
|
||||||
@@ -67,7 +78,7 @@ class SimbrellaIntegration:
|
|||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"Authorization": f"Bearer {SimbrellaIntegration._access_token}"
|
"Authorization": f"Bearer {SimbrellaIntegration._get_token()}"
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -93,7 +104,7 @@ class SimbrellaIntegration:
|
|||||||
try:
|
try:
|
||||||
headers = {
|
headers = {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"Authorization": f"Bearer {SimbrellaIntegration._access_token}"
|
"Authorization": f"Bearer {SimbrellaIntegration._get_token()}"
|
||||||
}
|
}
|
||||||
|
|
||||||
response = httpx.get(url, headers=headers, timeout=10.0)
|
response = httpx.get(url, headers=headers, timeout=10.0)
|
||||||
|
|||||||
@@ -46,6 +46,13 @@ class Config:
|
|||||||
VALID_API_KEY = os.getenv("SIMBRELLA_API_KEY", "test-api-key-12345")
|
VALID_API_KEY = os.getenv("SIMBRELLA_API_KEY", "test-api-key-12345")
|
||||||
SIMBRELLA_BASE_URL = os.getenv("SIMBRELLA_BASE_URL", "http://127.0.0.1:6337")
|
SIMBRELLA_BASE_URL = os.getenv("SIMBRELLA_BASE_URL", "http://127.0.0.1:6337")
|
||||||
SIMBRELLA_ENDPOINT_RAC_CHECKS = os.getenv("SIMBRELLA_ENDPOINT_RAC_CHECKS","api/rac-check")
|
SIMBRELLA_ENDPOINT_RAC_CHECKS = os.getenv("SIMBRELLA_ENDPOINT_RAC_CHECKS","api/rac-check")
|
||||||
|
SIMBRELLA_HEALTH = os.getenv("SIMBRELLA_ENDPOINT_RAC_CHECKS","api/system-health-check")
|
||||||
|
BANK_CALL_AUTH_ENDPOINT = os.getenv("BANK_CALL_AUTH_ENDPOINT", "/api/Auth/generate-token")
|
||||||
|
BANK_CALL_USERNAME = os.getenv("BANK_CALL_USERNAME", "simbrella")
|
||||||
|
BANK_CALL_PASSWORD = os.getenv("BANK_CALL_PASSWORD", "G7$k9@pL2!qR")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EVENTS_SERVICE_BASE_URL = os.getenv("EVENTS_SERVICE_BASE_URL","https://event-core.simbrellang.net")
|
EVENTS_SERVICE_BASE_URL = os.getenv("EVENTS_SERVICE_BASE_URL","https://event-core.simbrellang.net")
|
||||||
ENDPOINT_DIRECT_LOAN = os.getenv("ENDPOINT_DIRECT_LOAN","/autocall/direct/loan")
|
ENDPOINT_DIRECT_LOAN = os.getenv("ENDPOINT_DIRECT_LOAN","/autocall/direct/loan")
|
||||||
ENDPOINT_DIRECT_REPAYMENT = os.getenv("ENDPOINT_DIRECT_REPAYMENT","/autocall/direct/repayment")
|
ENDPOINT_DIRECT_REPAYMENT = os.getenv("ENDPOINT_DIRECT_REPAYMENT","/autocall/direct/repayment")
|
||||||
|
|||||||
Reference in New Issue
Block a user