ocngx / config.py
tanbushi's picture
update
5e15438
Raw
History Blame
2.16 kB
"""
Configuration settings for the API client
"""
import os
from typing import Optional
# Default configuration
DEFAULT_BASE_URL = "https://airsltd-ocngx.hf.space"
DEFAULT_USERNAME = "admin"
DEFAULT_PASSWORD = "admin123"
DEFAULT_TIMEOUT = 30
# Environment variable names
ENV_BASE_URL = "API_BASE_URL"
ENV_USERNAME = "API_USERNAME"
ENV_PASSWORD = "API_PASSWORD"
ENV_TIMEOUT = "API_TIMEOUT"
ENV_LOG_LEVEL = "API_LOG_LEVEL"
# HTTP status codes
HTTP_OK = 200
HTTP_UNAUTHORIZED = 401
HTTP_BAD_REQUEST = 400
HTTP_INTERNAL_ERROR = 500
# Content types
CONTENT_TYPE_JSON = "application/json"
CONTENT_TYPE_HTML = "text/html"
CONTENT_TYPE_TEXT = "text/plain"
# Retry configuration
DEFAULT_MAX_RETRIES = 3
DEFAULT_RETRY_BACKOFF = 1.0
class Config:
"""Configuration class for API client settings"""
def __init__(self):
self.base_url = os.getenv(ENV_BASE_URL, DEFAULT_BASE_URL)
self.username = os.getenv(ENV_USERNAME, DEFAULT_USERNAME)
self.password = os.getenv(ENV_PASSWORD, DEFAULT_PASSWORD)
self.timeout = int(os.getenv(ENV_TIMEOUT, DEFAULT_TIMEOUT))
self.log_level = os.getenv(ENV_LOG_LEVEL, "INFO")
def __repr__(self):
return (f"Config(base_url='{self.base_url}', "
f"username='{self.username}', "
f"timeout={self.timeout})")
def get_config() -> Config:
"""Get configuration instance"""
return Config()
def get_connection_params(
base_url: Optional[str] = None,
username: Optional[str] = None,
password: Optional[str] = None,
timeout: Optional[int] = None
) -> dict:
"""
Get connection parameters with fallback to environment variables and defaults.
Args:
base_url: Override base URL
username: Override username
password: Override password
timeout: Override timeout
Returns:
Dictionary with connection parameters
"""
config = get_config()
return {
'base_url': base_url or config.base_url,
'username': username or config.username,
'password': password or config.password,
'timeout': timeout or config.timeout
}