postJson method
Future<Map<String, dynamic> >
postJson(
- String endpoint,
- Map<
String, dynamic> body, { - CancelToken? cancelToken,
Make a POST request with JSON body
Implementation
Future<Map<String, dynamic>> postJson(
String endpoint,
Map<String, dynamic> body, {
CancelToken? cancelToken,
}) 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,
cancelToken: cancelToken,
);
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');
}
}