| 1 | from pydantic import Field |
| 2 | from pydantic_settings import BaseSettings, SettingsConfigDict |
| 3 | |
| 4 | |
| 5 | class Settings(BaseSettings): |
| 6 | model_config = SettingsConfigDict(env_prefix="", extra="ignore") |
| 7 | |
| 8 | service_name: str = "ibkr-connector" |
| 9 | aip_environment: str = Field(default="LOCAL", alias="AIP_ENVIRONMENT") |
| 10 | aip_ibkr_gateway_package_path: str = Field(default="", alias="AIP_IBKR_GATEWAY_PACKAGE_PATH") |
| 11 | aip_ibkr_gateway_base_url: str = Field(default="", alias="AIP_IBKR_GATEWAY_BASE_URL") |
| 12 | aip_ibkr_gateway_tls_verify: bool = Field( |
| 13 | default=True, validation_alias="AIP_IBKR_GATEWAY_TLS_VERIFY" |
| 14 | ) |
| 15 | aip_ibkr_login_public_base_url: str = Field(default="", alias="AIP_IBKR_LOGIN_PUBLIC_BASE_URL") |
| 16 | aip_internal_token: str = Field(default="", alias="AIP_INTERNAL_TOKEN") |
| 17 | aip_connector_require_internal_token: bool = Field( |
| 18 | default=True, alias="AIP_CONNECTOR_REQUIRE_INTERNAL_TOKEN" |
| 19 | ) |
| 20 | aip_ibkr_production_approved: bool = Field(default=False, alias="IBKR_PRODUCTION_APPROVED") |
| 21 | aip_ibkr_heartbeat_timeout_seconds: int = Field( |
| 22 | default=20, alias="AIP_IBKR_HEARTBEAT_TIMEOUT_SECONDS" |
| 23 | ) |
| 24 | |
| 25 | @property |
| 26 | def gateway_api_base_url(self) -> str: |
| 27 | return self.aip_ibkr_gateway_base_url.rstrip("/") |
| 28 | |
| 29 | @property |
| 30 | def login_public_base_url(self) -> str: |
| 31 | return self.aip_ibkr_login_public_base_url.rstrip("/") |