initialize method
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
}
}