VWeb/Includes/Http.h

89 lines
2 KiB
C
Raw Normal View History

#pragma once
2024-02-04 14:59:00 +01:00
#include <cstdint>
2024-02-04 13:52:08 +01:00
#include <limits>
namespace VWeb {
enum class HttpStatusCode : int {
Continue = 100,
SwitchingProtocols = 101,
Processing = 102,
EarlyHints = 103,
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,
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,
PayloadTooLarge = 413,
URITooLong = 414,
UnsupportedMediaType = 415,
RangeNotSatisfiable = 416,
ExpectationFailed = 417,
ImATeapot = 418,
UnprocessableEntity = 422,
Locked = 423,
FailedDependency = 424,
UpgradeRequired = 426,
PreconditionRequired = 428,
TooManyRequests = 429,
RequestHeaderFieldsTooLarge = 431,
UnavailableForLegalReasons = 451,
InternalServerError = 500,
NotImplemented = 501,
BadGateway = 502,
ServiceUnavailable = 503,
GatewayTimeout = 504,
HTTPVersionNotSupported = 505,
VariantAlsoNegotiates = 506,
InsufficientStorage = 507,
LoopDetected = 508,
NotExtended = 510,
NetworkAuthenticationRequired = 511
};
2024-02-04 13:52:08 +01:00
enum class HttpMethod : uint32_t {
GET = 1 << 0,
HEAD = 1 << 1,
OPTIONS = 1 << 2,
POST = 1 << 3,
PUT = 1 << 4,
PATCH = 1 << 5,
DELETE = 1 << 6,
FALLBACK = 1 << 7,
ALL = std::numeric_limits<uint32_t>::max()
};
2024-02-04 13:52:08 +01:00
inline uint32_t operator|(HttpMethod lhs, HttpMethod rhs) {
return static_cast<uint32_t>(lhs) | static_cast<uint32_t>(rhs);
}
inline bool operator&(const uint32_t lhs, HttpMethod rhs) {
return lhs & static_cast<uint32_t>(rhs);
}
} // namespace VWeb