handleDioError method

LLMError handleDioError(
  1. DioException e
)

Handle Dio errors and convert them to appropriate LLM errors

Implementation

LLMError handleDioError(DioException e) {
  switch (e.type) {
    case DioExceptionType.connectionTimeout:
    case DioExceptionType.sendTimeout:
    case DioExceptionType.receiveTimeout:
      return TimeoutError('Request timeout: ${e.message}');
    case DioExceptionType.badResponse:
      final statusCode = e.response?.statusCode;
      final responseData = e.response?.data;

      if (statusCode != null) {
        // Use HttpErrorMapper for consistent error handling
        final errorMessage =
            _extractErrorMessage(responseData) ?? '$statusCode';
        final responseMap =
            responseData is Map<String, dynamic> ? responseData : null;

        return HttpErrorMapper.mapStatusCode(
            statusCode, errorMessage, responseMap);
      } else {
        return ResponseFormatError(
          'HTTP error without status code',
          responseData?.toString() ?? '',
        );
      }
    case DioExceptionType.cancel:
      return const GenericError('Request cancelled');
    case DioExceptionType.connectionError:
      return const GenericError('Connection error');
    case DioExceptionType.badCertificate:
      return const GenericError('SSL certificate error');
    case DioExceptionType.unknown:
      return GenericError('Unknown error: ${e.message}');
  }
}