mirror of
https://github.com/HerculesWS/Hercules
synced 2026-08-15 12:23:13 -04:00
108 lines
6.1 KiB
C
108 lines
6.1 KiB
C
/**
|
||
* This file is part of Hercules.
|
||
* http://herc.ws - http://github.com/HerculesWS/Hercules
|
||
*
|
||
* Copyright (C) 2020-2026 Hercules Dev Team
|
||
* Copyright (C) 2020-2022 Andrei Karas (4144)
|
||
*
|
||
* Hercules 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
|
||
* (at your option) 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 <http://www.gnu.org/licenses/>.
|
||
*/
|
||
#ifndef API_HTTP_INCLUDE_H
|
||
#define API_HTTP_INCLUDE_H
|
||
|
||
#ifdef USE_HTTP_PARSER
|
||
#include <http-parser/http_parser.h>
|
||
typedef enum http_method http_method;
|
||
typedef struct http_parser HTTP_PARSER;
|
||
#else // USE_HTTP_PARSER
|
||
#include <llhttp/llhttp.h>
|
||
typedef enum llhttp_method http_method;
|
||
typedef llhttp_t HTTP_PARSER;
|
||
#define http_method_str llhttp_method_name
|
||
#define http_errno_name llhttp_errno_name
|
||
#define http_parser_settings llhttp_settings_s
|
||
|
||
// Copiede from http_parser, as llhttp doesn´t have it
|
||
/* Status Codes */
|
||
#define HTTP_STATUS_MAP(XX) \
|
||
XX(100, CONTINUE, Continue) \
|
||
XX(101, SWITCHING_PROTOCOLS, Switching Protocols) \
|
||
XX(102, PROCESSING, Processing) \
|
||
XX(200, OK, OK) \
|
||
XX(201, CREATED, Created) \
|
||
XX(202, ACCEPTED, Accepted) \
|
||
XX(203, NON_AUTHORITATIVE_INFORMATION, Non-Authoritative Information) \
|
||
XX(204, NO_CONTENT, No Content) \
|
||
XX(205, RESET_CONTENT, Reset Content) \
|
||
XX(206, PARTIAL_CONTENT, Partial Content) \
|
||
XX(207, MULTI_STATUS, Multi-Status) \
|
||
XX(208, ALREADY_REPORTED, Already Reported) \
|
||
XX(226, IM_USED, IM Used) \
|
||
XX(300, MULTIPLE_CHOICES, Multiple Choices) \
|
||
XX(301, MOVED_PERMANENTLY, Moved Permanently) \
|
||
XX(302, FOUND, Found) \
|
||
XX(303, SEE_OTHER, See Other) \
|
||
XX(304, NOT_MODIFIED, Not Modified) \
|
||
XX(305, USE_PROXY, Use Proxy) \
|
||
XX(307, TEMPORARY_REDIRECT, Temporary Redirect) \
|
||
XX(308, PERMANENT_REDIRECT, Permanent Redirect) \
|
||
XX(400, BAD_REQUEST, Bad Request) \
|
||
XX(401, UNAUTHORIZED, Unauthorized) \
|
||
XX(402, PAYMENT_REQUIRED, Payment Required) \
|
||
XX(403, FORBIDDEN, Forbidden) \
|
||
XX(404, NOT_FOUND, Not Found) \
|
||
XX(405, METHOD_NOT_ALLOWED, Method Not Allowed) \
|
||
XX(406, NOT_ACCEPTABLE, Not Acceptable) \
|
||
XX(407, PROXY_AUTHENTICATION_REQUIRED, Proxy Authentication Required) \
|
||
XX(408, REQUEST_TIMEOUT, Request Timeout) \
|
||
XX(409, CONFLICT, Conflict) \
|
||
XX(410, GONE, Gone) \
|
||
XX(411, LENGTH_REQUIRED, Length Required) \
|
||
XX(412, PRECONDITION_FAILED, Precondition Failed) \
|
||
XX(413, PAYLOAD_TOO_LARGE, Payload Too Large) \
|
||
XX(414, URI_TOO_LONG, URI Too Long) \
|
||
XX(415, UNSUPPORTED_MEDIA_TYPE, Unsupported Media Type) \
|
||
XX(416, RANGE_NOT_SATISFIABLE, Range Not Satisfiable) \
|
||
XX(417, EXPECTATION_FAILED, Expectation Failed) \
|
||
XX(421, MISDIRECTED_REQUEST, Misdirected Request) \
|
||
XX(422, UNPROCESSABLE_ENTITY, Unprocessable Entity) \
|
||
XX(423, LOCKED, Locked) \
|
||
XX(424, FAILED_DEPENDENCY, Failed Dependency) \
|
||
XX(426, UPGRADE_REQUIRED, Upgrade Required) \
|
||
XX(428, PRECONDITION_REQUIRED, Precondition Required) \
|
||
XX(429, TOO_MANY_REQUESTS, Too Many Requests) \
|
||
XX(431, REQUEST_HEADER_FIELDS_TOO_LARGE, Request Header Fields Too Large) \
|
||
XX(451, UNAVAILABLE_FOR_LEGAL_REASONS, Unavailable For Legal Reasons) \
|
||
XX(500, INTERNAL_SERVER_ERROR, Internal Server Error) \
|
||
XX(501, NOT_IMPLEMENTED, Not Implemented) \
|
||
XX(502, BAD_GATEWAY, Bad Gateway) \
|
||
XX(503, SERVICE_UNAVAILABLE, Service Unavailable) \
|
||
XX(504, GATEWAY_TIMEOUT, Gateway Timeout) \
|
||
XX(505, HTTP_VERSION_NOT_SUPPORTED, HTTP Version Not Supported) \
|
||
XX(506, VARIANT_ALSO_NEGOTIATES, Variant Also Negotiates) \
|
||
XX(507, INSUFFICIENT_STORAGE, Insufficient Storage) \
|
||
XX(508, LOOP_DETECTED, Loop Detected) \
|
||
XX(510, NOT_EXTENDED, Not Extended) \
|
||
XX(511, NETWORK_AUTHENTICATION_REQUIRED, Network Authentication Required) \
|
||
|
||
enum http_status
|
||
{
|
||
#define XX(num, name, string) HTTP_STATUS_##name = num,
|
||
HTTP_STATUS_MAP(XX)
|
||
#undef XX
|
||
};
|
||
|
||
#endif // USE_HTTP_PARSER
|
||
|
||
#endif /* API_HTTP_INCLUDE_H */
|