117 lines
3.4 KiB
Dart
117 lines
3.4 KiB
Dart
// Copyright (C) 2022 WYATT GROUP
|
|
// Please see the AUTHORS file for details.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
/// Status codes for HTTP responses. Extracted from dart:io
|
|
enum HttpStatus {
|
|
continue_(100),
|
|
switchingProtocols(101),
|
|
processing(102),
|
|
ok(200),
|
|
created(201),
|
|
accepted(202),
|
|
nonAuthoritativeInformation(203),
|
|
noContent(204),
|
|
resetContent(205),
|
|
partialContent(206),
|
|
multiStatus(207),
|
|
alreadyReported(208),
|
|
imUsed(226),
|
|
multipleChoices(300),
|
|
movedPermanently(301),
|
|
found(302),
|
|
movedTemporarily(302), // Common alias for found.
|
|
seeOther(303),
|
|
notModified(304),
|
|
useProxy(305),
|
|
temporaryRedirect(307),
|
|
permanentRedirect(308),
|
|
badRequest(400),
|
|
unauthorized(401),
|
|
paymentRequired(402),
|
|
forbidden(403),
|
|
notFound(404),
|
|
methodNotAllowed(405),
|
|
notAcceptable(406),
|
|
proxyAuthenticationRequired(407),
|
|
requestTimeout(408),
|
|
conflict(409),
|
|
gone(410),
|
|
lengthRequired(411),
|
|
preconditionFailed(412),
|
|
requestEntityTooLarge(413),
|
|
requestUriTooLong(414),
|
|
unsupportedMediaType(415),
|
|
requestedRangeNotSatisfiable(416),
|
|
expectationFailed(417),
|
|
misdirectedRequest(421),
|
|
unprocessableEntity(422),
|
|
locked(423),
|
|
failedDependency(424),
|
|
upgradeRequired(426),
|
|
preconditionRequired(428),
|
|
tooManyRequests(429),
|
|
requestHeaderFieldsTooLarge(431),
|
|
connectionClosedWithoutResponse(444),
|
|
unavailableForLegalReasons(451),
|
|
clientClosedRequest(499),
|
|
internalServerError(500),
|
|
notImplemented(501),
|
|
badGateway(502),
|
|
serviceUnavailable(503),
|
|
gatewayTimeout(504),
|
|
httpVersionNotSupported(505),
|
|
variantAlsoNegotiates(506),
|
|
insufficientStorage(507),
|
|
loopDetected(508),
|
|
notExtended(510),
|
|
networkAuthenticationRequired(511),
|
|
// Client generated status code.
|
|
networkConnectTimeoutError(599);
|
|
|
|
const HttpStatus(this.statusCode);
|
|
|
|
/// Returns the [HttpStatus] with the given [statusCode].
|
|
factory HttpStatus.from(int status) =>
|
|
HttpStatus.values.firstWhere((element) => element.statusCode == status);
|
|
|
|
final int statusCode;
|
|
|
|
bool equals(Object other) {
|
|
if (other is HttpStatus) {
|
|
return statusCode == other.statusCode;
|
|
}
|
|
if (other is int) {
|
|
return statusCode == other;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// Checks if the status code is in the range of 100-199.
|
|
bool isInfo() => statusCode >= 100 && statusCode < 200;
|
|
|
|
/// Checks if the status code is in the range of 200-299.
|
|
bool isSuccess() => statusCode >= 200 && statusCode < 300;
|
|
|
|
/// Checks if the status code is in the range of 300-399.
|
|
bool isRedirection() => statusCode >= 300 && statusCode < 400;
|
|
|
|
/// Checks if the status code is in the range of 400-499.
|
|
bool isClientError() => statusCode >= 400 && statusCode < 500;
|
|
|
|
/// Checks if the status code is in the range of 500-599.
|
|
bool isServerError() => statusCode >= 500 && statusCode < 600;
|
|
}
|