Line data Source code
1 : import 'package:tech_proof/core/error/failure.dart'; 2 : import 'package:dio/dio.dart'; 3 : 4 2 : Failure mapDioException(DioException e) { 5 2 : switch (e.type) { 6 2 : case DioExceptionType.connectionTimeout: 7 2 : case DioExceptionType.sendTimeout: 8 2 : case DioExceptionType.receiveTimeout: 9 2 : case DioExceptionType.connectionError: 10 2 : return NetworkFailure("No internet connection or timeout"); 11 : 12 2 : case DioExceptionType.badResponse: 13 2 : final statusCode = e.response?.statusCode; 14 2 : if (statusCode == 401) return UnauthorizedFailure("Unauthorized"); 15 1 : if (statusCode == 404) return ServerFailure("Not found"); 16 2 : if (statusCode == 500) return ServerFailure("Internal server error"); 17 0 : return ServerFailure("Server error: $statusCode"); 18 : 19 2 : case DioExceptionType.cancel: 20 0 : return UnexpectedFailure("Request cancelled"); 21 : 22 : default: 23 6 : return UnexpectedFailure("Unexpected error: ${e.message}"); 24 : } 25 : }