errorHandlerFileContent top-level constant
String
const errorHandlerFileContent
Implementation
const String errorHandlerFileContent = '''
import 'package:dio/dio.dart';
import 'package:easy_localization/easy_localization.dart';
import '../../core/utils/strings_manager.dart';
import 'failure.dart';
class ErrorHandler implements Exception {
late Failure failure;
ErrorHandler.handle(dynamic error) {
if (error is DioError) {
failure = _handleError(error);
} else {
failure = DataSource.DEFAULT.getFailure();
}
}
}
Failure _handleError(DioError error) {
switch (error.type) {
case DioErrorType.connectionTimeout:
return DataSource.CONNECT_TIMEOUT.getFailure();
case DioErrorType.sendTimeout:
return DataSource.SEND_TIMEOUT.getFailure();
case DioErrorType.receiveTimeout:
return DataSource.RECIEVE_TIMEOUT.getFailure();
case DioErrorType.cancel:
return DataSource.CANCEL.getFailure();
case DioErrorType.connectionError:
return DataSource.CONNECT_TIMEOUT.getFailure();
default:
return DataSource.DEFAULT.getFailure();
}
}
enum DataSource {
SUCCESS,
NO_CONTENT,
BAD_REQUEST,
FORBIDDEN,
UNAUTORISED,
NOT_FOUND,
INTERNAL_SERVER_ERROR,
CONNECT_TIMEOUT,
CANCEL,
RECIEVE_TIMEOUT,
SEND_TIMEOUT,
CACHE_ERROR,
NO_INTERNET_CONNECTION,
DEFAULT
}
extension DataSourceExtension on DataSource {
Failure getFailure() {
switch (this) {
case DataSource.SUCCESS:
return Failure(ResponseCode.SUCCESS, ResponseMessage.SUCCESS.tr());
case DataSource.NO_CONTENT:
return Failure(
ResponseCode.NO_CONTENT, ResponseMessage.NO_CONTENT.tr());
case DataSource.BAD_REQUEST:
return Failure(
ResponseCode.BAD_REQUEST, ResponseMessage.BAD_REQUEST.tr());
case DataSource.FORBIDDEN:
return Failure(ResponseCode.FORBIDDEN, ResponseMessage.FORBIDDEN.tr());
case DataSource.UNAUTORISED:
return Failure(
ResponseCode.UNAUTORISED, ResponseMessage.UNAUTORISED.tr());
case DataSource.NOT_FOUND:
return Failure(ResponseCode.NOT_FOUND, ResponseMessage.NOT_FOUND.tr());
case DataSource.INTERNAL_SERVER_ERROR:
return Failure(ResponseCode.INTERNAL_SERVER_ERROR,
ResponseMessage.INTERNAL_SERVER_ERROR.tr());
case DataSource.CONNECT_TIMEOUT:
return Failure(
ResponseCode.CONNECT_TIMEOUT, ResponseMessage.CONNECT_TIMEOUT.tr());
case DataSource.CANCEL:
return Failure(ResponseCode.CANCEL, ResponseMessage.CANCEL.tr());
case DataSource.RECIEVE_TIMEOUT:
return Failure(
ResponseCode.RECIEVE_TIMEOUT, ResponseMessage.RECIEVE_TIMEOUT.tr());
case DataSource.SEND_TIMEOUT:
return Failure(
ResponseCode.SEND_TIMEOUT, ResponseMessage.SEND_TIMEOUT.tr());
case DataSource.CACHE_ERROR:
return Failure(
ResponseCode.CACHE_ERROR, ResponseMessage.CACHE_ERROR.tr());
case DataSource.NO_INTERNET_CONNECTION:
return Failure(ResponseCode.NO_INTERNET_CONNECTION,
ResponseMessage.NO_INTERNET_CONNECTION.tr());
case DataSource.DEFAULT:
return Failure(ResponseCode.DEFAULT, ResponseMessage.DEFAULT.tr());
}
}
}
class ResponseCode {
static const int SUCCESS = 200; // success with data
static const int NO_CONTENT = 201; // success with no data (no content)
static const int BAD_REQUEST = 400; // failure, API rejected request
static const int UNAUTORISED = 401; // failure, user is not authorised
static const int FORBIDDEN = 403; // failure, API rejected request
static const int INTERNAL_SERVER_ERROR = 500; // failure, crash in server side
static const int NOT_FOUND = 404; // failure, not found
// local status code
static const int CONNECT_TIMEOUT = -1;
static const int CANCEL = -2;
static const int RECIEVE_TIMEOUT = -3;
static const int SEND_TIMEOUT = -4;
static const int CACHE_ERROR = -5;
static const int NO_INTERNET_CONNECTION = -6;
static const int DEFAULT = -7;
}
class ResponseMessage {
static const String SUCCESS = StringsManager.success; // success with data
static const String NO_CONTENT =
StringsManager.success; // success with no data (no content)
static const String BAD_REQUEST =
StringsManager.badRequestError; // failure, API rejected request
static const String UNAUTORISED =
StringsManager.unauthorizedError; // failure, user is not authorised
static const String FORBIDDEN =
StringsManager.forbiddenError; // failure, API rejected request
static const String INTERNAL_SERVER_ERROR =
StringsManager.internalServerError; // failure, crash in server side
static const String NOT_FOUND =
StringsManager.notFoundError; // failure, crash in server side
// local status code
static const String CONNECT_TIMEOUT = StringsManager.timeoutError;
static const String CANCEL = StringsManager.defaultError;
static const String RECIEVE_TIMEOUT = StringsManager.timeoutError;
static const String SEND_TIMEOUT = StringsManager.timeoutError;
static const String CACHE_ERROR = StringsManager.cacheError;
static const String NO_INTERNET_CONNECTION = StringsManager.noInternetError;
static const String DEFAULT = StringsManager.defaultError;
}
class ApiInternalStatus {
static const int SUCCESS = 0;
static const int FAILURE = 1;
}
''';