create static method

Dio create({
  1. required FxConfig config,
  2. required FxTokenManager tokenManager,
  3. required Future<bool> onUnauthorized(),
})

Implementation

static Dio create({
  required FxConfig config,
  required FxTokenManager tokenManager,
  required Future<bool> Function() onUnauthorized,
}) {
  final dio = Dio(
    BaseOptions(
      baseUrl: '${config.apiBaseUrl}/${config.apiVersion}',
      connectTimeout: Duration(milliseconds: config.connectTimeoutMs),
      receiveTimeout: Duration(milliseconds: config.receiveTimeoutMs),
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
    ),
  );

  dio.interceptors.addAll([
    FxHeadersInterceptor(config),
    FxLogInterceptor(),
    FxAuthInterceptor(
      dio: dio,
      tokenManager: tokenManager,
      onRefresh: onUnauthorized,
      publicEndpoints: config.endpoints.publicEndpoints,
    )
  ]);

  return dio;
}