master
h 63 lines 2.21 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_HTTP_DEFS_H
4 #define NETDATA_HTTP_DEFS_H
5
6 #define HTTP_1_1 " HTTP/1.1"
7 #define HTTP_HDR_END "\r\n\r\n"
8 #define HTTP_ENDL "\r\n"
9
10 // HTTP_CODES 1XX
11 #define HTTP_RESP_SWITCH_PROTO 101
12 #define HTTP_RESP_WEBSOCKET_HANDSHAKE 101 // WebSocket uses 101 Switching Protocols
13
14 // HTTP_CODES 2XX Success
15 #define HTTP_RESP_OK 200
16 #define HTTP_RESP_ACCEPTED 202
17
18 // HTTP_CODES 3XX Redirections
19 #define HTTP_RESP_MOVED_PERM 301
20 #define HTTP_RESP_NOT_MODIFIED 304
21 #define HTTP_RESP_REDIR_TEMP 307
22 #define HTTP_RESP_REDIR_PERM 308
23 #define HTTP_RESP_HTTPS_UPGRADE 399
24
25 // HTTP_CODES 4XX Client Errors
26 #define HTTP_RESP_BAD_REQUEST 400
27 #define HTTP_RESP_NOT_FOUND 404
28 #define HTTP_RESP_METHOD_NOT_ALLOWED 405
29 #define HTTP_RESP_CONFLICT 409
30 #define HTTP_RESP_CONTENT_TOO_LONG 413
31
32 #define HTTP_RESP_UNAUTHORIZED 401 // do not use 401 when responding to users - it is used by authenticating proxies
33 #define HTTP_RESP_FORBIDDEN 403 // not enough permissions to access this resource
34 #define HTTP_RESP_PRECOND_FAIL 412 // An authorization bearer is required by it was not found in the request
35 #define HTTP_RESP_UNAVAILABLE_FOR_LEGAL_REASONS 451 // Unavailable For Legal Reasons, we use it instead of 403 when access is forbidden due to an ACL.
36
37 #define HTTP_RESP_CLIENT_CLOSED_REQUEST 499 // nginx's enxtension to the standard
38
39 // HTTP_CODES 5XX Server Errors
40 #define HTTP_RESP_INTERNAL_SERVER_ERROR 500
41 #define HTTP_RESP_NOT_IMPLEMENTED 501
42 #define HTTP_RESP_SERVICE_UNAVAILABLE 503
43 #define HTTP_RESP_GATEWAY_TIMEOUT 504
44 #define HTTP_RESP_BACKEND_RESPONSE_INVALID 591
45
46 typedef enum __attribute__((__packed__)) {
47 HTTP_REQUEST_MODE_NONE = 0,
48 HTTP_REQUEST_MODE_GET = 1,
49 HTTP_REQUEST_MODE_POST = 2,
50 HTTP_REQUEST_MODE_PUT = 3,
51 HTTP_REQUEST_MODE_DELETE = 4,
52 HTTP_REQUEST_MODE_FILECOPY = 5,
53 HTTP_REQUEST_MODE_OPTIONS = 6,
54 HTTP_REQUEST_MODE_STREAM = 7,
55 HTTP_REQUEST_MODE_WEBSOCKET = 8,
56 } HTTP_REQUEST_MODE;
57
58 ENUM_STR_DEFINE_FUNCTIONS_EXTERN(HTTP_REQUEST_MODE);
59
60 const char *http_response_code2string(int code);
61 HTTP_CONTENT_TYPE contenttype_for_filename(const char *filename);
62
63 #endif /* NETDATA_HTTP_DEFS_H */