configure method

Future<void> configure({
  1. required SDKEnvironment environment,
  2. String? apiKey,
  3. String? baseURL,
  4. String? accessToken,
  5. Map<String, String>? defaultHeaders,
})

Implementation

Future<void> configure({
  required SDKEnvironment environment,
  String? apiKey,
  String? baseURL,
  String? accessToken,
  Map<String, String>? defaultHeaders,
}) async {
  _apiKey = apiKey;
  _accessToken = accessToken;
  _baseURL = baseURL ?? _getDefaultBaseURL(environment);

  if (defaultHeaders != null) {
    _defaultHeaders.addAll(defaultHeaders);
  }

  try {
    final lib = PlatformLoader.loadCommons();
    final configureFn = lib
        .lookupFunction<
          Int32 Function(Pointer<Utf8>, Pointer<Utf8>),
          int Function(Pointer<Utf8>, Pointer<Utf8>)
        >('rac_http_configure');

    final basePtr = (_baseURL ?? '').toNativeUtf8();
    final keyPtr = (_apiKey ?? '').toNativeUtf8();

    try {
      final result = configureFn(basePtr, keyPtr);
      if (result != RacResultCode.success) {
        _logger.warning('HTTP configure failed', metadata: {'code': result});
      }
    } finally {
      calloc.free(basePtr);
      calloc.free(keyPtr);
    }
  } catch (_) {
    _logger.debug('Native HTTP configuration unavailable');
  }

  _isConfigured = true;
  _logger.debug('HTTP configured');
}