postJson method
Make a POST request with JSON body
Implementation
Future<Map<String, dynamic>> postJson(
String endpoint,
Map<String, dynamic> body,
) async {
if (config.apiKey.isEmpty) {
throw const AuthError('Missing OpenAI API key');
}
try {
// Optimized logging with condition check
if (logger.isLoggable(Level.FINE)) {
logger.fine('OpenAI request: POST /$endpoint');
logger.fine('OpenAI request headers: ${dio.options.headers}');
}
final response = await dio.post(endpoint, data: body);
if (logger.isLoggable(Level.FINE)) {
logger.fine('OpenAI HTTP status: ${response.statusCode}');
}
if (response.statusCode != 200) {
_handleErrorResponse(response, endpoint);
}
// Use unified response parsing while keeping OpenAI's error handling
return HttpResponseHandler.parseJsonResponse(
response.data,
providerName: 'OpenAI',
);
} on DioException catch (e) {
throw handleDioError(e);
} catch (e) {
throw GenericError('Unexpected error: $e');
}
}