mirror of
				https://github.com/ijaric/voice_assistant.git
				synced 2025-10-30 23:43:25 +00:00 
			
		
		
		
	feat: [#38] add proxy settings
This commit is contained in:
		
							parent
							
								
									005dd3ce0e
								
							
						
					
					
						commit
						306ae27171
					
				|  | @ -5,6 +5,12 @@ POSTGRES_USER=user | ||||||
| POSTGRES_PASSWORD=Qwe123 | POSTGRES_PASSWORD=Qwe123 | ||||||
| POSTGRES_DB_NAME=api_db | POSTGRES_DB_NAME=api_db | ||||||
| 
 | 
 | ||||||
|  | PROXY_HOST=255.255.255.255 | ||||||
|  | PROXY_PORT=8888 | ||||||
|  | PROXY_USER=YOUR_USER | ||||||
|  | PROXY_PASSWORD=YOUR_PASSWORD | ||||||
|  | PROXY_ENABLE=False | ||||||
|  | 
 | ||||||
| NGINX_PORT=80 | NGINX_PORT=80 | ||||||
| API_HOST=0.0.0.0 | API_HOST=0.0.0.0 | ||||||
| API_PORT=8000 | API_PORT=8000 | ||||||
|  |  | ||||||
|  | @ -16,3 +16,4 @@ class Settings(pydantic_settings.BaseSettings): | ||||||
|     project: app_split_settings.ProjectSettings = pydantic.Field( |     project: app_split_settings.ProjectSettings = pydantic.Field( | ||||||
|         default_factory=lambda: app_split_settings.ProjectSettings() |         default_factory=lambda: app_split_settings.ProjectSettings() | ||||||
|     ) |     ) | ||||||
|  |     proxy: app_split_settings.ProxySettings = pydantic.Field(default_factory=lambda: app_split_settings.ProxySettings()) | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ from .app import * | ||||||
| from .logger import * | from .logger import * | ||||||
| from .postgres import * | from .postgres import * | ||||||
| from .project import * | from .project import * | ||||||
|  | from .proxy import * | ||||||
| 
 | 
 | ||||||
| __all__ = [ | __all__ = [ | ||||||
|     "ApiSettings", |     "ApiSettings", | ||||||
|  | @ -10,5 +11,6 @@ __all__ = [ | ||||||
|     "LoggingSettings", |     "LoggingSettings", | ||||||
|     "PostgresSettings", |     "PostgresSettings", | ||||||
|     "ProjectSettings", |     "ProjectSettings", | ||||||
|  |     "ProxySettings", | ||||||
|     "get_logging_config", |     "get_logging_config", | ||||||
| ] | ] | ||||||
|  |  | ||||||
							
								
								
									
										40
									
								
								src/assistant/lib/app/split_settings/proxy.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/assistant/lib/app/split_settings/proxy.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | ||||||
|  | import pydantic | ||||||
|  | import pydantic_settings | ||||||
|  | 
 | ||||||
|  | import lib.app.split_settings.utils as app_split_settings_utils | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class ProxySettings(pydantic_settings.BaseSettings): | ||||||
|  |     model_config = pydantic_settings.SettingsConfigDict( | ||||||
|  |         env_file=app_split_settings_utils.ENV_PATH, | ||||||
|  |         env_prefix="PROXY_", | ||||||
|  |         env_file_encoding="utf-8", | ||||||
|  |         extra="ignore", | ||||||
|  |     ) | ||||||
|  |     user: str | None = None | ||||||
|  |     password: pydantic.SecretStr | None = None | ||||||
|  |     host: str | None = None | ||||||
|  |     port: int | None = None | ||||||
|  |     enable: bool = False | ||||||
|  | 
 | ||||||
|  |     @property | ||||||
|  |     def dsn(self) -> str: | ||||||
|  |         if self.user and self.password: | ||||||
|  |             password = self.password.get_secret_value() | ||||||
|  |             return f"http://{self.user}:{password}@{self.host}:{self.port}" | ||||||
|  |         return f"http://{self.host}:{self.port}" | ||||||
|  | 
 | ||||||
|  |     @pydantic.computed_field | ||||||
|  |     @property | ||||||
|  |     def dsn_as_safe_url(self) -> str: | ||||||
|  |         if self.user and self.password: | ||||||
|  |             return f"http://{self.user}:{self.password}@{self.host}:{self.port}" | ||||||
|  |         return f"http://{self.host}:{self.port}" | ||||||
|  | 
 | ||||||
|  |     @pydantic.model_validator(mode="after") | ||||||
|  |     def check_proxy(self): | ||||||
|  |         if not self.enable: | ||||||
|  |             return self | ||||||
|  |         if self.host and self.port: | ||||||
|  |             return self | ||||||
|  |         raise ValueError("Proxy settings must be set if use_proxy is True") | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user