Initial commit
This commit is contained in:
commit
9795660e1f
43 changed files with 2757 additions and 0 deletions
76
config/api_config.py
Normal file
76
config/api_config.py
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
import os
|
||||
from typing import Dict, Any, List
|
||||
from config.environment import EnvironmentLoader
|
||||
|
||||
class APIConfig:
|
||||
"""Настройки API"""
|
||||
|
||||
# Базовые настройки API
|
||||
API_BASE_URL = EnvironmentLoader.get_env_variable('API_BASE_URL', 'http://localhost:8080/api/v1')
|
||||
API_VERSION = EnvironmentLoader.get_env_variable('API_VERSION', 'v1')
|
||||
API_TIMEOUT = EnvironmentLoader.get_env_variable('API_TIMEOUT', 30) # секунды
|
||||
|
||||
# Настройки запросов
|
||||
MAX_RETRIES = EnvironmentLoader.get_env_variable('MAX_RETRIES', 3)
|
||||
RETRY_DELAY = EnvironmentLoader.get_env_variable('RETRY_DELAY', 1) # секунды
|
||||
RETRY_BACKOFF_FACTOR = EnvironmentLoader.get_env_variable('RETRY_BACKOFF_FACTOR', 2)
|
||||
|
||||
# Настройки валидации
|
||||
VALIDATE_SCHEMAS = EnvironmentLoader.get_env_variable('VALIDATE_SCHEMAS', True)
|
||||
STRICT_VALIDATION = EnvironmentLoader.get_env_variable('STRICT_VALIDATION', False)
|
||||
|
||||
# Настройки тестовых данных
|
||||
TEST_DATA_PREFIX = EnvironmentLoader.get_env_variable('TEST_DATA_PREFIX', 'test_')
|
||||
CLEANUP_AFTER_TESTS = EnvironmentLoader.get_env_variable('CLEANUP_AFTER_TESTS', True)
|
||||
CLEANUP_ONLY_FAILED = EnvironmentLoader.get_env_variable('CLEANUP_ONLY_FAILED', False)
|
||||
|
||||
# Endpoints (можно переопределить через окружение)
|
||||
ENDPOINTS = {
|
||||
'auth_login': EnvironmentLoader.get_env_variable('ENDPOINT_AUTH_LOGIN', '/login'),
|
||||
'auth_logout': EnvironmentLoader.get_env_variable('ENDPOINT_AUTH_LOGOUT', '/logout'),
|
||||
'users_create': EnvironmentLoader.get_env_variable('ENDPOINT_USERS_CREATE', '/team/'),
|
||||
'users_get_all': EnvironmentLoader.get_env_variable('ENDPOINT_USERS_GET_ALL', '/members/'),
|
||||
'users_get_by_id': EnvironmentLoader.get_env_variable('ENDPOINT_USERS_GET_BY_ID', '/members/{id}'),
|
||||
'users_get_by_name': EnvironmentLoader.get_env_variable('ENDPOINT_USERS_GET_BY_NAME', '/members/name/{name}'),
|
||||
'users_update': EnvironmentLoader.get_env_variable('ENDPOINT_USERS_UPDATE', '/team/{id}'),
|
||||
'users_delete': EnvironmentLoader.get_env_variable('ENDPOINT_USERS_DELETE', '/team/{id}'),
|
||||
'posts_create': EnvironmentLoader.get_env_variable('ENDPOINT_POSTS_CREATE', '/post'),
|
||||
'posts_get_all': EnvironmentLoader.get_env_variable('ENDPOINT_POSTS_GET_ALL', '/post'),
|
||||
'posts_get_by_id': EnvironmentLoader.get_env_variable('ENDPOINT_POSTS_GET_BY_ID', '/post/{id}'),
|
||||
'posts_get_by_offset': EnvironmentLoader.get_env_variable('ENDPOINT_POSTS_GET_BY_OFFSET', '/post/offset/{offset}'),
|
||||
'posts_update': EnvironmentLoader.get_env_variable('ENDPOINT_POSTS_UPDATE', '/post/{id}'),
|
||||
'posts_delete': EnvironmentLoader.get_env_variable('ENDPOINT_POSTS_DELETE', '/post/{id}'),
|
||||
'images_upload': EnvironmentLoader.get_env_variable('ENDPOINT_IMAGES_UPLOAD', '/images/'),
|
||||
'images_get': EnvironmentLoader.get_env_variable('ENDPOINT_IMAGES_GET', '/images/{path}'),
|
||||
'images_delete': EnvironmentLoader.get_env_variable('ENDPOINT_IMAGES_DELETE', '/images/{path}'),
|
||||
'images_list': EnvironmentLoader.get_env_variable('ENDPOINT_IMAGES_LIST', '/images'),
|
||||
}
|
||||
|
||||
# Настройки по умолчанию для запросов
|
||||
DEFAULT_HEADERS = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:139.0) Gecko/20100101 Firefox/139.0',
|
||||
'Accept': 'application/json',
|
||||
'Accept-Language': EnvironmentLoader.get_env_variable('API_ACCEPT_LANGUAGE', 'en-US,en;q=0.9'),
|
||||
}
|
||||
|
||||
# Настройки прокси (если нужно)
|
||||
PROXY_ENABLED = EnvironmentLoader.get_env_variable('PROXY_ENABLED', False)
|
||||
PROXY_HTTP = EnvironmentLoader.get_env_variable('PROXY_HTTP', None)
|
||||
PROXY_HTTPS = EnvironmentLoader.get_env_variable('PROXY_HTTPS', None)
|
||||
|
||||
@classmethod
|
||||
def get_endpoint(cls, endpoint_name: str, **kwargs) -> str:
|
||||
"""Получение endpoint с подстановкой параметров"""
|
||||
endpoint_template = cls.ENDPOINTS.get(endpoint_name)
|
||||
if not endpoint_template:
|
||||
raise ValueError(f"Endpoint '{endpoint_name}' not found in configuration")
|
||||
|
||||
return cls.API_BASE_URL + endpoint_template.format(**kwargs)
|
||||
|
||||
@classmethod
|
||||
def get_all_endpoints(cls) -> Dict[str, str]:
|
||||
"""Получение всех endpoints"""
|
||||
return cls.ENDPOINTS.copy()
|
||||
|
||||
# Экспорт конфигурации
|
||||
api_config = APIConfig
|
||||
Loading…
Add table
Add a link
Reference in a new issue