You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
5.8 KiB
98 lines
5.8 KiB
From 335850f6b868d3411968cbf5a4d59fe619dee36f Mon Sep 17 00:00:00 2001 |
|
From: Nathaniel McCallum <npmccallum@redhat.com> |
|
Date: Thu, 6 Oct 2016 02:03:36 -0400 |
|
Subject: [PATCH] parser: HTTP_STATUS_MAP(XX) and enum http_status |
|
|
|
This patch provides an enum for the standardized HTTP status codes. |
|
Additionally, the HTTP_STATUS_MAP(XX) can be used for other purposes as |
|
well, such as code-to-name lookups and code-based switch statements. |
|
|
|
PR-URL: https://github.com/nodejs/http-parser/pull/337 |
|
Reviewed-By: Fedor Indutny <fedor@indutny.com> |
|
Reviewed-By: Brian White <mscdex@mscdex.net> |
|
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> |
|
--- |
|
http_parser.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
1 file changed, 70 insertions(+) |
|
|
|
diff --git a/http_parser.h b/http_parser.h |
|
index ea26394..45c72a0 100644 |
|
--- a/http_parser.h |
|
+++ b/http_parser.h |
|
@@ -90,6 +90,76 @@ typedef int (*http_data_cb) (http_parser*, const char *at, size_t length); |
|
typedef int (*http_cb) (http_parser*); |
|
|
|
|
|
+/* 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 |
|
+ }; |
|
+ |
|
+ |
|
/* Request Methods */ |
|
#define HTTP_METHOD_MAP(XX) \ |
|
XX(0, DELETE, DELETE) \
|
|
|