2025-01-21 14:24:31 +03:00
|
|
|
import 'package:dio/dio.dart';
|
2025-06-20 16:50:48 +03:00
|
|
|
import 'package:friflex_starter/app/app_config/app_config.dart';
|
2025-04-27 17:08:34 +03:00
|
|
|
|
2025-01-21 14:24:31 +03:00
|
|
|
import 'package:friflex_starter/features/debug/i_debug_service.dart';
|
|
|
|
|
|
2025-04-27 17:08:34 +03:00
|
|
|
/// {@template app_http_client}
|
|
|
|
|
/// Класс для реализации HTTP-клиента для управления запросами
|
|
|
|
|
/// {@endtemplate}
|
2025-12-11 10:27:19 +03:00
|
|
|
final class AppHttpClient {
|
2025-01-21 14:24:31 +03:00
|
|
|
/// Создает HTTP клиент
|
|
|
|
|
///
|
|
|
|
|
/// Принимает:
|
|
|
|
|
/// - [debugService] - сервис для логирования запросов
|
|
|
|
|
/// - [appConfig] - конфигурация приложения
|
|
|
|
|
AppHttpClient({
|
|
|
|
|
required IDebugService debugService,
|
|
|
|
|
required IAppConfig appConfig,
|
|
|
|
|
}) {
|
|
|
|
|
_httpClient = Dio();
|
|
|
|
|
|
|
|
|
|
_httpClient.options
|
|
|
|
|
..baseUrl = appConfig.baseUrl
|
|
|
|
|
..connectTimeout = const Duration(seconds: 5)
|
|
|
|
|
..sendTimeout = const Duration(seconds: 7)
|
|
|
|
|
..receiveTimeout = const Duration(seconds: 10)
|
2025-05-28 16:38:56 +03:00
|
|
|
..headers = {'Content-Type': 'application/json'};
|
2025-02-04 10:18:41 +03:00
|
|
|
debugService.log('HTTP client created');
|
2025-04-27 17:08:34 +03:00
|
|
|
_httpClient.interceptors.add(debugService.dioLogger);
|
2025-01-21 14:24:31 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Экземпляр HTTP клиента
|
|
|
|
|
late final Dio _httpClient;
|
|
|
|
|
|
2025-12-11 10:27:19 +03:00
|
|
|
Dio get client => _httpClient;
|
2025-01-21 14:24:31 +03:00
|
|
|
}
|