import 'package:dio/dio.dart'; import 'package:holzleitner_api/holzleitner_api.dart'; import 'auth_token_provider.dart'; import 'backend_config.dart'; import 'holzleitner_auth_interceptor.dart'; /// Baut den generierten `HolzleitnerApi`-Client mit: /// * eigener `Dio`-Instanz (Base-URL + Timeouts aus [BackendConfig]), /// * **ohne** die vier Default-Auth-Interceptors des Generators — /// stattdessen wird unser [HolzleitnerAuthInterceptor] gehängt. /// /// Auf diese Weise bleibt die Token-Quelle pluggable /// ([AuthTokenProvider]), und Phase B (Keycloak OIDC) kann die /// Provider-Implementierung austauschen, ohne den Rest des Codes /// anzufassen. HolzleitnerApi buildHolzleitnerApi({ required BackendConfig config, required AuthTokenProvider tokenProvider, }) { final dio = Dio( BaseOptions( baseUrl: config.apiBaseUrl, connectTimeout: const Duration(seconds: 10), receiveTimeout: const Duration(seconds: 30), sendTimeout: const Duration(seconds: 30), headers: const {'Accept': 'application/json'}, ), ); return HolzleitnerApi( dio: dio, interceptors: [HolzleitnerAuthInterceptor(tokenProvider)], ); }