AnCH Framework 0.1
Another C++ Hack Framework
Loading...
Searching...
No Matches
constants.hpp
1/*
2 ANCH Framework: ANother C++ Hack is a C++ framework based on C++11 standard
3 Copyright (C) 2020 Vincent Lachenal
4
5 This file is part of ANCH Framework.
6
7 ANCH Framework is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 ANCH Framework is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with ANCH Framework. If not, see <http://www.gnu.org/licenses/>.
19*/
20#pragma once
21
22#include <string>
23#include <vector>
24#include <regex>
25
26namespace anch {
27 namespace rest {
28
29 // Verbs +
39 struct Verb {
40 // HTTP specifications +
42 static const std::string GET;
44 static const std::string PUT;
46 static const std::string PATCH;
48 static const std::string POST;
50 static const std::string DELETE;
52 static const std::string OPTIONS;
54 static const std::string TRACE;
56 static const std::string HEAD;
58 static const std::string CONNECT;
59 // HTTP specifications -
60
61 // WebDAV specifications +
63 static const std::string COPY;
65 static const std::string LOCK;
67 static const std::string MKCOL;
69 static const std::string MOVE;
71 static const std::string PROPFIND;
73 static const std::string PROPPATCH;
75 static const std::string UNLOCK;
76 // WebDAV specifications -
77 };
78 // Verbs -
79
80 // Status codes +
93 enum class StatusCode {
94 // 1xx - Informations +
96 CONTINUE = 100,
98 SWITCHING_PROTOCOLES = 101,
100 PROCESSING = 102,
102 EARLY_HINTS = 103,
103 // 1xx - Informations -
104
105 // 2xx - Success +
107 OK = 200,
109 CREATED = 201,
111 ACCEPTED = 202,
113 NON_AUTH_INFORMATION = 203,
115 NO_CONTENT = 204,
117 RESET_CONTENT = 205,
119 PARTIAL_CONTENT = 206,
121 MULTI_STATUS = 207,
123 ALREADY_REPORTED = 208,
125 IM_USED = 209,
126 // 2xx - Success -
127
128 // 3xx - Redirection +
130 MULTIPLE_CHOICES = 300,
132 MOVE_PERMANENTLY = 301,
134 FOUND = 302,
136 SEE_OTHER = 303,
138 NOT_MODIFIED = 304,
140 USE_PROXY = 305,
142 SWITCH_PROXY = 306,
144 TEMPORARY_REDIRECT = 307,
146 PERMANENT_REDIRECT = 308,
147 // 3xx - Redirection -
148
149 // 4xx - Clients errors +
151 BAD_REQUEST = 400,
156 UNAUTHORIZED = 401,
158 PAYMENT_REQUIRED = 402,
160 FORBIDDEN = 403,
162 NOT_FOUND = 404,
164 METHOD_NOT_ALLOWED = 405,
166 NOT_ACCEPTABLE = 406,
168 PROXY_AUTHENTICATION_REQUIRED = 407,
170 REQUEST_TIMEOUT = 408,
172 CONFLICT = 409,
174 GONE = 410,
176 LENGTH_REQUIRED = 411,
178 PRECONDITION_FAILED = 412,
180 PAYLOAD_TOO_LARGE = 413,
182 URI_TOO_LONG = 414,
184 UNSUPPORTED_MEDIA_TYPE = 415,
186 RANGE_NOT_SATISFIABLE = 416,
188 EXPECTATION_FAILED = 417,
190 IM_A_TEAPOT = 418,
192 MISREDIRECT_REQUEST = 421,
194 UNPROCESSABLE_ENTITY = 422,
195 /* The resource that is being accessed is locked. */
196 LOCKED = 423,
198 FAILED_DEPENDENCY = 424,
200 TOO_EARLY = 425,
202 UPGRADE_REQUIRED = 426,
204 PRECONDITION_REQUIRED = 428,
206 TOO_MANY_REQUESTS = 429,
208 REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
210 UNAVAILABLE_FOR_LEGAL_REASONS = 451,
211 // 4xx - Clients errors -
212
213 // 5xx - Server errors +
215 INTERNAL_SERVER_ERROR = 500,
217 NOT_IMPLEMENTED = 501,
219 BAD_GATEWAY = 502,
221 SERVICE_UNAVAILABLE = 503,
223 GATEWAY_TIMEOUT = 504,
225 HTTP_VERSION_NOT_SUPPORTED = 505,
227 VARIANT_ALSO_NEGOTIATES = 506,
229 INSUFFICIENT_STORAGE = 507,
231 LOOP_DETECTED = 508,
233 NOT_EXTENDED = 510,
235 NETWORK_AUTHENTICATION_REQUIRED = 511
236 // 5xx - Server errors -
237 };
238 // Status codes -
239
240 // Common media types +
250 struct MediaType {
252 static const std::string NONE;
254 static const std::string ALL;
256 static const std::string APP_GRAPHQL;
258 static const std::string APP_JAVASCRIPT;
260 static const std::string APP_JSON;
262 static const std::string APP_OCTET_STREAM;
264 static const std::string APP_VND_PROTOBUF;
266 static const std::string APP_VND_THRIFT_BINARY;
268 static const std::string APP_VND_THRIFT_COMPACT;
270 static const std::string APP_VND_THRIFT_JSON;
272 static const std::string APP_X_PROTOBUF;
274 static const std::string APP_X_WWW_FORM_URLENCODED;
276 static const std::string APP_XML;
278 static const std::string MULTIPART_FORM_DATA;
280 static const std::string TXT_CSS;
282 static const std::string TXT_CSV;
284 static const std::string TXT_HTML;
286 static const std::string TXT_PLAIN;
288 static const std::string TXT_XML;
289 };
290 // Common media types -
291
292 // Common headers +
301
302 // Standard commons +
304 static const std::string CACHE_CONTROL;
306 static const std::string CONNECTION;
308 static const std::string CONTENT_ENCODING;
310 static const std::string CONTENT_LENGTH;
312 static const std::string CONTENT_MD5;
314 static const std::string CONTENT_TYPE;
316 static const std::string DATE;
318 static const std::string PRAGMA;
320 static const std::string TRAILER;
322 static const std::string TRANSFER_ENCODING;
324 static const std::string UPGRADE;
326 static const std::string VIA;
328 static const std::string WARNING;
329 // Standard commons -
330
331 // Commons +
333 static const std::string X_REQUEST_ID;
335 static const std::string X_CORRELATION_ID;
336 // Commons -
337
338 // Standard request +
340 static const std::string A_IM;
342 static const std::string ACCEPT;
344 static const std::string ACCEPT_CHARSET;
346 static const std::string ACCEPT_DATETIME;
348 static const std::string ACCEPT_LANGUAGE;
350 static const std::string ACCESS_CONTROL_REQUEST_METHOD;
352 static const std::string ACCESS_CONTROL_REQUEST_HEADERS;
354 static const std::string AUTHORIZATION;
356 static const std::string COOKIE;
358 static const std::string EXPECT;
360 static const std::string FORWARDED;
362 static const std::string FROM;
364 static const std::string HOST;
366 static const std::string HTTP2_SETTINGS;
368 static const std::string IF_MATCH;
370 static const std::string IF_MODIFIED_SINCE;
372 static const std::string IF_NONE_MATCH;
374 static const std::string IF_RANGE;
376 static const std::string IF_UNMODIFIED_SINCE;
378 static const std::string MAX_FORWARDS;
380 static const std::string ORIGIN;
382 static const std::string PREFER;
384 static const std::string PROXY_AUTHORIZATION;
386 static const std::string RANGE;
388 static const std::string REFERER;
390 static const std::string TE;
392 static const std::string USER_AGENT;
393 // Standard request -
394
395 // Commons request +
397 static const std::string UPGRADE_INSECURE_REQUESTS;
399 static const std::string X_REQUESTED_WITH;
401 static const std::string DNT;
403 static const std::string X_FORWARDED_FOR;
405 static const std::string X_FORWARDED_HOST;
407 static const std::string X_FORWARDED_PROTO;
409 static const std::string FRONT_END_HTTPS;
411 static const std::string X_HTTP_METHOD_OVERRIDE;
413 static const std::string X_ATT_DEVICEID;
415 static const std::string X_WAP_PROFILE;
417 static const std::string PROXY_CONNECTION;
419 static const std::string X_UIDH;
421 static const std::string X_CSRF_TOKEN;
423 static const std::string SAVE_DATA;
424 // Commons request -
425
426 // Standard response +
428 static const std::string ACCEPT_CH;
430 static const std::string ACCESS_CONTROL_ALLOW_ORIGIN;
432 static const std::string ACCESS_CONTROL_ALLOW_CREDENTIALS;
434 static const std::string ACCESS_CONTROL_EXPOSE_HEADERS;
436 static const std::string ACCESS_CONTROL_MAX_AGE;
438 static const std::string ACCESS_CONTROL_ALLOW_METHODS;
440 static const std::string ACCESS_CONTROL_ALLOW_HEADERS;
442 static const std::string ACCEPT_PATCH;
444 static const std::string ACCEPT_RANGES;
446 static const std::string AGE;
448 static const std::string ALLOW;
450 static const std::string ALT_SVC;
452 static const std::string CONTENT_DISPOSITION;
454 static const std::string CONTENT_LANGUAGE;
456 static const std::string CONTENT_LOCATION;
458 static const std::string CONTENT_RANGE;
460 static const std::string DELTA_BASE;
462 static const std::string ETAG;
464 static const std::string EXPIRES;
466 static const std::string IM;
468 static const std::string LAST_MODIFIED;
470 static const std::string LINK;
472 static const std::string LOCATION;
474 static const std::string P3P;
476 static const std::string PREFERENCE_APPLIED;
478 static const std::string PROXY_AUTHENTICATE;
480 static const std::string PUBLIC_KEY_PINS;
482 static const std::string RETRY_AFTER;
484 static const std::string SERVER;
486 static const std::string SET_COOKIE;
488 static const std::string STRICT_TRANSPORT_SECURITY;
490 static const std::string TK;
492 static const std::string VARY;
494 static const std::string WWW_AUTHENTICATE;
496 static const std::string X_FRAME_OPTIONS;
497 // Standard response -
498
499 // Common response +
501 static const std::string CONTENT_SECURITY_POLICY;
503 static const std::string X_CONTENT_SECURITY_POLICY;
505 static const std::string X_WEBKIT_CSP;
507 static const std::string EXPECT_CT;
509 static const std::string NEL;
511 static const std::string PERMISSIONS_POLICY;
513 static const std::string REFRESH;
515 static const std::string REPORT_TO;
517 static const std::string STATUS;
519 static const std::string TIMING_ALLOW_ORIGIN;
521 static const std::string X_CONTENT_DURATION;
523 static const std::string X_CONTENT_TYPE_OPTIONS;
525 static const std::string X_POWERED_BY;
527 static const std::string X_REDIRECT_BY;
529 static const std::string X_UA_COMPATIBLE;
531 static const std::string X_XSS_PROTECTION;
532 // Common response -
533
534 };
535 // Common headers -
536
538 extern const std::string EMPTY_VALUE;
539
541 extern const std::vector<std::string> EMPTY_VEC; // \todo check if used
542
544 extern const std::regex PATH_PATTERN;
545
546 } // rest
547} // anch
AnCH framework base namespace.
Definition app.hpp:28
Common HTTP headers.
Definition constants.hpp:300
static const std::string FRONT_END_HTTPS
Definition constants.hpp:409
static const std::string STRICT_TRANSPORT_SECURITY
Definition constants.hpp:488
static const std::string IF_MODIFIED_SINCE
Definition constants.hpp:370
static const std::string PROXY_CONNECTION
Definition constants.hpp:417
static const std::string FROM
Definition constants.hpp:362
static const std::string X_REQUESTED_WITH
Definition constants.hpp:399
static const std::string ACCESS_CONTROL_ALLOW_METHODS
Definition constants.hpp:438
static const std::string X_ATT_DEVICEID
Definition constants.hpp:413
static const std::string X_CORRELATION_ID
Definition constants.hpp:335
static const std::string ACCESS_CONTROL_ALLOW_HEADERS
Definition constants.hpp:440
static const std::string REFRESH
Definition constants.hpp:513
static const std::string X_CSRF_TOKEN
Definition constants.hpp:421
static const std::string TK
Definition constants.hpp:490
static const std::string X_WAP_PROFILE
Definition constants.hpp:415
static const std::string CONTENT_DISPOSITION
Definition constants.hpp:452
static const std::string ACCESS_CONTROL_ALLOW_CREDENTIALS
Definition constants.hpp:432
static const std::string ACCEPT_RANGES
Definition constants.hpp:444
static const std::string X_REQUEST_ID
Definition constants.hpp:333
static const std::string EXPECT
Definition constants.hpp:358
static const std::string STATUS
Definition constants.hpp:517
static const std::string X_XSS_PROTECTION
Definition constants.hpp:531
static const std::string ACCEPT_CHARSET
Definition constants.hpp:344
static const std::string EXPECT_CT
Definition constants.hpp:507
static const std::string HOST
Definition constants.hpp:364
static const std::string SERVER
Definition constants.hpp:484
static const std::string X_FORWARDED_HOST
Definition constants.hpp:405
static const std::string COOKIE
Definition constants.hpp:356
static const std::string IF_NONE_MATCH
Definition constants.hpp:372
static const std::string AUTHORIZATION
Definition constants.hpp:354
static const std::string CACHE_CONTROL
Definition constants.hpp:304
static const std::string X_HTTP_METHOD_OVERRIDE
Definition constants.hpp:411
static const std::string CONNECTION
Definition constants.hpp:306
static const std::string CONTENT_LOCATION
Definition constants.hpp:456
static const std::string TIMING_ALLOW_ORIGIN
Definition constants.hpp:519
static const std::string DELTA_BASE
Definition constants.hpp:460
static const std::string LAST_MODIFIED
Definition constants.hpp:468
static const std::string X_CONTENT_DURATION
Definition constants.hpp:521
static const std::string UPGRADE
Definition constants.hpp:324
static const std::string PRAGMA
Definition constants.hpp:318
static const std::string X_POWERED_BY
Definition constants.hpp:525
static const std::string REPORT_TO
Definition constants.hpp:515
static const std::string NEL
Definition constants.hpp:509
static const std::string ORIGIN
Definition constants.hpp:380
static const std::string ACCEPT_PATCH
Definition constants.hpp:442
static const std::string TE
Definition constants.hpp:390
static const std::string RANGE
Definition constants.hpp:386
static const std::string X_FORWARDED_PROTO
Definition constants.hpp:407
static const std::string ACCESS_CONTROL_EXPOSE_HEADERS
Definition constants.hpp:434
static const std::string WARNING
Definition constants.hpp:328
static const std::string WWW_AUTHENTICATE
Definition constants.hpp:494
static const std::string X_WEBKIT_CSP
Definition constants.hpp:505
static const std::string CONTENT_MD5
Definition constants.hpp:312
static const std::string ACCEPT_LANGUAGE
Definition constants.hpp:348
static const std::string IF_MATCH
Definition constants.hpp:368
static const std::string ACCESS_CONTROL_REQUEST_HEADERS
Definition constants.hpp:352
static const std::string TRANSFER_ENCODING
Definition constants.hpp:322
static const std::string CONTENT_SECURITY_POLICY
Definition constants.hpp:501
static const std::string EXPIRES
Definition constants.hpp:464
static const std::string P3P
Definition constants.hpp:474
static const std::string PROXY_AUTHENTICATE
Definition constants.hpp:478
static const std::string ALT_SVC
Definition constants.hpp:450
static const std::string X_FORWARDED_FOR
Definition constants.hpp:403
static const std::string VIA
Definition constants.hpp:326
static const std::string X_UIDH
Definition constants.hpp:419
static const std::string LOCATION
Definition constants.hpp:472
static const std::string X_UA_COMPATIBLE
Definition constants.hpp:529
static const std::string ETAG
Definition constants.hpp:462
static const std::string A_IM
Definition constants.hpp:340
static const std::string TRAILER
Definition constants.hpp:320
static const std::string FORWARDED
Definition constants.hpp:360
static const std::string USER_AGENT
Definition constants.hpp:392
static const std::string CONTENT_LANGUAGE
Definition constants.hpp:454
static const std::string ACCESS_CONTROL_ALLOW_ORIGIN
Definition constants.hpp:430
static const std::string ACCESS_CONTROL_MAX_AGE
Definition constants.hpp:436
static const std::string UPGRADE_INSECURE_REQUESTS
Definition constants.hpp:397
static const std::string PROXY_AUTHORIZATION
Definition constants.hpp:384
static const std::string ACCESS_CONTROL_REQUEST_METHOD
Definition constants.hpp:350
static const std::string RETRY_AFTER
Definition constants.hpp:482
static const std::string VARY
Definition constants.hpp:492
static const std::string IF_RANGE
Definition constants.hpp:374
static const std::string LINK
Definition constants.hpp:470
static const std::string CONTENT_RANGE
Definition constants.hpp:458
static const std::string CONTENT_LENGTH
Definition constants.hpp:310
static const std::string SET_COOKIE
Definition constants.hpp:486
static const std::string PREFERENCE_APPLIED
Definition constants.hpp:476
static const std::string PREFER
Definition constants.hpp:382
static const std::string MAX_FORWARDS
Definition constants.hpp:378
static const std::string REFERER
Definition constants.hpp:388
static const std::string PERMISSIONS_POLICY
Definition constants.hpp:511
static const std::string DNT
Definition constants.hpp:401
static const std::string X_CONTENT_SECURITY_POLICY
Definition constants.hpp:503
static const std::string CONTENT_ENCODING
Definition constants.hpp:308
static const std::string PUBLIC_KEY_PINS
Definition constants.hpp:480
static const std::string ACCEPT
Definition constants.hpp:342
static const std::string CONTENT_TYPE
Definition constants.hpp:314
static const std::string IF_UNMODIFIED_SINCE
Definition constants.hpp:376
static const std::string ALLOW
Definition constants.hpp:448
static const std::string HTTP2_SETTINGS
Definition constants.hpp:366
static const std::string SAVE_DATA
Definition constants.hpp:423
static const std::string ACCEPT_DATETIME
Definition constants.hpp:346
static const std::string X_CONTENT_TYPE_OPTIONS
Definition constants.hpp:523
static const std::string AGE
Definition constants.hpp:446
static const std::string X_FRAME_OPTIONS
Definition constants.hpp:496
static const std::string ACCEPT_CH
Definition constants.hpp:428
static const std::string IM
Definition constants.hpp:466
static const std::string DATE
Definition constants.hpp:316
static const std::string X_REDIRECT_BY
Definition constants.hpp:527
Media type.
Definition constants.hpp:250
static const std::string APP_GRAPHQL
Definition constants.hpp:256
static const std::string APP_X_WWW_FORM_URLENCODED
Definition constants.hpp:274
static const std::string TXT_CSS
Definition constants.hpp:280
static const std::string APP_VND_THRIFT_JSON
Definition constants.hpp:270
static const std::string TXT_XML
Definition constants.hpp:288
static const std::string APP_VND_THRIFT_COMPACT
Definition constants.hpp:268
static const std::string APP_JAVASCRIPT
Definition constants.hpp:258
static const std::string TXT_PLAIN
Definition constants.hpp:286
static const std::string APP_JSON
Definition constants.hpp:260
static const std::string APP_XML
Definition constants.hpp:276
static const std::string APP_X_PROTOBUF
Definition constants.hpp:272
static const std::string NONE
Definition constants.hpp:252
static const std::string MULTIPART_FORM_DATA
Definition constants.hpp:278
static const std::string ALL
Definition constants.hpp:254
static const std::string APP_OCTET_STREAM
Definition constants.hpp:262
static const std::string APP_VND_THRIFT_BINARY
Definition constants.hpp:266
static const std::string APP_VND_PROTOBUF
Definition constants.hpp:264
static const std::string TXT_HTML
Definition constants.hpp:284
static const std::string TXT_CSV
Definition constants.hpp:282
HTTP verbs.
Definition constants.hpp:39
static const std::string PATCH
Definition constants.hpp:46
static const std::string PROPFIND
Definition constants.hpp:71
static const std::string GET
Definition constants.hpp:42
static const std::string POST
Definition constants.hpp:48
static const std::string MKCOL
Definition constants.hpp:67
static const std::string MOVE
Definition constants.hpp:69
static const std::string TRACE
Definition constants.hpp:54
static const std::string OPTIONS
Definition constants.hpp:52
static const std::string COPY
Definition constants.hpp:63
static const std::string HEAD
Definition constants.hpp:56
static const std::string PROPPATCH
Definition constants.hpp:73
static const std::string CONNECT
Definition constants.hpp:58
static const std::string DELETE
Definition constants.hpp:50
static const std::string PUT
Definition constants.hpp:44
static const std::string UNLOCK
Definition constants.hpp:75
static const std::string LOCK
Definition constants.hpp:65