NetworkResponseException.fromDioException constructor

NetworkResponseException.fromDioException(
  1. DioException err
)

Factory constructor to create a NetworkResponseException from a DioException.

Implementation

factory NetworkResponseException.fromDioException(DioException err) {
  assert(err.type == DioExceptionType.badResponse);

  final statusCode = err.response?.statusCode;
  final responseData = err.response?.data;
  String message;
  NetworkErrorCode code;

  switch (statusCode) {
    case 400:
      message = 'Bad Request (400)';
      code = NetworkErrorCode.badRequest;
      break;
    case 401:
      message = 'Unauthorized (401)';
      code = NetworkErrorCode.unauthorized;
      break;
    case 403:
      message = 'Forbidden (403)';
      code = NetworkErrorCode.forbidden;
      break;
    case 404:
      message = 'Not Found (404)';
      code = NetworkErrorCode.notFound;
      break;
    case 500:
    case 501:
    case 502:
    case 503:
    case 504:
      message = 'Internal Server Error ($statusCode)';
      code = NetworkErrorCode.serverError;
      break;
    default:
      message = 'Unhandled Server Response Status Code: $statusCode';
      code = NetworkErrorCode.responseUnhandled;
      break;
  }

  return NetworkResponseException(
    message: message, // Default English/debug message
    code: code, // The crucial code for localization
    statusCode: statusCode,
    responseData: responseData,
  );
}