initialize method

Future<void> initialize(
  1. String env
)

Implementation

Future<void> initialize(String env) async {
  if (_gokwikHttpClient != null) return;

  String appPlatform;

  if (defaultTargetPlatform == TargetPlatform.android) {
    appPlatform = 'android';
  } else if (defaultTargetPlatform == TargetPlatform.iOS) {
    appPlatform = 'ios';
  } else {
    appPlatform = 'unknown';
  }

  final packageInfo = await PackageInfo.fromPlatform();
  final appVersion = packageInfo.version;
  final source = '${appPlatform}-app';

  // Get environment config - automatically falls back to bundled kp-config.json
  final envConfig = cdnConfigInstance.getEnvironment(env);
  final baseUrl = envConfig?.baseUrl ?? SdkConfig.getBaseUrl(env);

  _gokwikHttpClient = Dio(BaseOptions(
    baseUrl: baseUrl,
    headers: {
      'accept': '*/*',
      cdnConfigInstance.getHeader(APIHeaderKeys.appplatform)!: appPlatform,
      cdnConfigInstance.getHeader(APIHeaderKeys.appversion)!: appVersion,
      cdnConfigInstance.getHeader(APIHeaderKeys.source)!: source,
    },
  ));

  // Configure SSL pinning for the environment
  try {
    SSLPinningAdapter.configureDio(_gokwikHttpClient!, env);
    if (kDebugMode) {
      // print('✅ SSL Pinning configured for environment: $env');
      // print('   Pinned domain: ${SSLPinningAdapter.getPinnedDomain(env)}');
    }
  } catch (e) {
    if (kDebugMode) {
      print('⚠️ Failed to configure SSL pinning: $e');
    }
    // Continue without SSL pinning in case of configuration error
  }
}