getJson static method
Create a standardized getJson method for providers
Implementation
static Future<Map<String, dynamic>> getJson(
Dio dio,
String endpoint, {
String? providerName,
Logger? logger,
Map<String, dynamic>? queryParameters,
Options? options,
}) async {
final provider = providerName ?? 'Unknown';
final log = logger ?? _logger;
try {
if (log.isLoggable(Level.FINE)) {
log.fine('$provider request: GET $endpoint');
}
final response = await dio.get(
endpoint,
queryParameters: queryParameters,
options: options,
);
if (log.isLoggable(Level.FINE)) {
log.fine('$provider HTTP status: ${response.statusCode}');
}
if (response.statusCode != 200) {
log.severe('$provider API returned status ${response.statusCode}');
throw DioException(
requestOptions: response.requestOptions,
response: response,
message: '$provider API returned status ${response.statusCode}',
);
}
return parseJsonResponse(response.data, providerName: provider);
} on DioException catch (e) {
log.severe('$provider HTTP GET request failed: ${e.message}');
rethrow;
} catch (e) {
if (e is LLMError) {
rethrow;
}
log.severe('Unexpected error in $provider getJson: $e');
throw GenericError('Unexpected error: $e');
}
}