feat(api): integrate Sitar API configuration and authentication

This commit is contained in:
2026-01-23 13:42:58 -06:00
parent 3995914ef5
commit 52708c5ba0
4 changed files with 23 additions and 16 deletions

View File

@@ -21,14 +21,12 @@ KEYCLOAK_FRONTEND_CLIENT_ID=anexo76-frontend
# ----- Backend -----
DEBUG=True
ENVIRONMENT=development
CORE_DB_HOST=postgres-a76
CORE_DB_PORT=5432
CORE_DB_NAME=anexo76_core
CORE_DB_USER=postgres
CORE_DB_PASSWORD=postgres
# ----- Frontend -----
NODE_ENV=development
VITE_API_URL=http://localhost:8000/api
@@ -36,3 +34,8 @@ INTERNAL_API_URL=http://backend:8000/api
VITE_KEYCLOAK_REALM=master
VITE_KEYCLOAK_URL=http://localhost:8080
VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
# ----- Sitar API -----
SITAR_API_URL=http://api.sitar.aduanasoft.com
SITAR_API_USER=your_sitar_user
SITAR_API_PASSWORD=your_sitar_password

View File

@@ -145,10 +145,11 @@ class ExchangeRateService:
return True
@staticmethod
def _get_external_api_token(base_url, username, password) -> Optional[str]:
def _get_sitar_api_token(base_url, username, password) -> Optional[str]:
"""Helper to get authentication token from external API"""
try:
login_url = f"{base_url}/auth/login"
print(base_url)
login_url = f"{base_url}/exchange-rate/auth/login"
payload = {"username": username, "password": password}
headers = {"Content-Type": "application/json"}
@@ -176,9 +177,9 @@ class ExchangeRateService:
Optional[float]: The exchange rate value if found, None otherwise.
"""
# API Credentials
API_BASE_URL = settings.EXTERNAL_API_URL
API_USER = settings.EXTERNAL_API_USER
API_PASS = settings.EXTERNAL_API_PASSWORD
API_BASE_URL = settings.SITAR_API_URL
API_USER = settings.SITAR_API_USER
API_PASS = settings.SITAR_API_PASSWORD
if not API_USER or not API_PASS:
print("ERROR: External API credentials not properly configured in settings")
@@ -188,14 +189,14 @@ class ExchangeRateService:
print(f"DEBUG: Fetching External API for date: {date_str}")
# 1. Get Token
token = ExchangeRateService._get_external_api_token(API_BASE_URL, API_USER, API_PASS)
token = ExchangeRateService._get_sitar_api_token(API_BASE_URL, API_USER, API_PASS)
if not token:
print("Failed to obtain external API token")
return None
# 2. Fetch Exchange Rate
# The API endpoint is /tipoCambio/{YYYY-MM-DD}
tc_endpoint = f"{API_BASE_URL}/tipoCambio/{date_str}"
tc_endpoint = f"{API_BASE_URL}/exchange-rate/tipoCambio/{date_str}"
# Auth header: The API expects just the token string in common usage, but we try standard first
# based on user feedback/code: 'Authorization:' . $token

View File

@@ -43,12 +43,15 @@ class Settings(BaseSettings):
LICENSE_CHECK_ENABLED: bool = True
# External APIs
EXTERNAL_API_URL: str = "http://74.208.80.245:3000"
EXTERNAL_API_USER: str = ""
EXTERNAL_API_PASSWORD: str = ""
SITAR_API_URL: str = "api.sitar.aduanasoft.com:880"
SITAR_API_USER: str = ""
SITAR_API_PASSWORD: str = ""
model_config = SettingsConfigDict(
env_file=[".env", "../.env"], case_sensitive=True, extra="ignore", env_file_encoding="utf-8"
env_file=[".env", "../.env"],
case_sensitive=True,
extra="ignore",
env_file_encoding="utf-8",
)
@property

View File

@@ -175,9 +175,9 @@ services:
- KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend}
- KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-dev-secret}
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5173,http://localhost:3000}
- EXTERNAL_API_URL=${EXTERNAL_API_URL}
- EXTERNAL_API_USER=${EXTERNAL_API_USER}
- EXTERNAL_API_PASSWORD=${EXTERNAL_API_PASSWORD}
- SITAR_API_URL=${SITAR_API_URL}
- SITAR_API_USER=${SITAR_API_USER}
- SITAR_API_PASSWORD=${SITAR_API_PASSWORD}
ports:
- "8000:8000"
depends_on: