Initial commit

This commit is contained in:
KamilM1205 2026-01-19 23:32:11 +04:00
commit 9795660e1f
43 changed files with 2757 additions and 0 deletions

76
config/api_config.py Normal file
View 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