validateConfig method

ValidationResult validateConfig({
  1. required SDKEnvironment environment,
  2. String? apiKey,
  3. String? baseURL,
})

Validate complete configuration

Implementation

ValidationResult validateConfig({
  required SDKEnvironment environment,
  String? apiKey,
  String? baseURL,
}) {
  try {
    final lib = PlatformLoader.loadCommons();
    final validateFn = lib.lookupFunction<
        Int32 Function(Pointer<RacSdkConfigStruct>),
        int Function(Pointer<RacSdkConfigStruct>)>('rac_validate_config');

    final config = calloc<RacSdkConfigStruct>();
    final apiKeyPtr = apiKey?.toNativeUtf8() ?? nullptr;
    final baseURLPtr = baseURL?.toNativeUtf8() ?? nullptr;

    try {
      config.ref.environment = _environmentToInt(environment);
      config.ref.apiKey = apiKeyPtr.cast<Utf8>();
      config.ref.baseURL = baseURLPtr.cast<Utf8>();

      final result = validateFn(config);
      return ValidationResult.fromCode(result);
    } finally {
      if (apiKeyPtr != nullptr) calloc.free(apiKeyPtr);
      if (baseURLPtr != nullptr) calloc.free(baseURLPtr);
      calloc.free(config);
    }
  } catch (e) {
    // Fallback: validate each part
    final apiKeyResult = validateApiKey(apiKey, environment);
    if (!apiKeyResult.isValid) return apiKeyResult;

    final urlResult = validateBaseURL(baseURL, environment);
    if (!urlResult.isValid) return urlResult;

    return ValidationResult.ok;
  }
}