83e5094893b8527982c85a3823620e150dcd2df3
[squeep-api-dingus] / lib / enum.js
1 'use strict';
2
3
4 const ContentType = {
5 TextHTML: 'text/html',
6 TextPlain: 'text/plain',
7 ApplicationForm: 'application/x-www-form-urlencoded',
8 ApplicationJson: 'application/json',
9 };
10
11 // Supported encoding types
12 const EncodingType = {
13 Brotli: 'br',
14 Gzip: 'gzip',
15 XGzip: 'x-gzip',
16 Identity: 'identity',
17 };
18
19 // Filename suffixes for serving pre-encoded files
20 const EncodingTypeSuffix = {
21 [EncodingType.Brotli]: '.br',
22 [EncodingType.Gzip]: '.gz',
23 [EncodingType.XGzip]: '.gz',
24 };
25
26 const ErrorResponse = {
27 BadRequest: {
28 statusCode: 400,
29 errorMessage: 'Bad Request',
30 },
31 Unauthorized: {
32 statusCode: 401,
33 errorMessage: 'Unauthorized',
34 },
35 Forbidden: {
36 statusCode: 403,
37 errorMessage: 'Forbidden',
38 },
39 ReallyForbidden: {
40 statusCode: 403,
41 errorMessage: 'F̦̩̫̼͔̫͓̃ͤ̈̆̀͑o̖̟͙̫̯̗̳̽ͦ̆́ͨr̩͉̰̗͉b̬̂͘į̟̬̓d͂͗҉̟͈̜͙ͅd͎̜̺̝͇͑̒̋̾ë̴̳̺͓̦̘́ͮ̈́ǹ͈̦̫̙',
42 },
43 NotFound: {
44 statusCode: 404,
45 errorMessage: 'Not Found',
46 },
47 MethodNotAllowed: {
48 statusCode: 405,
49 errorMessage: 'Method Not Allowed',
50 },
51 NotAcceptable: {
52 statusCode: 406,
53 errorMessage: 'Not Acceptable',
54 },
55 Gone: {
56 statusCode: 410,
57 errorMessage: 'Gone',
58 },
59 UnsupportedMediaType: {
60 statusCode: 415,
61 errorMessage: 'Unsupported Media Type',
62 },
63 InternalServerError: {
64 statusCode: 500,
65 errorMessage: 'Internal Server Error',
66 },
67 };
68
69 const ErrorResponseDefaultProxy = new Proxy(ErrorResponse, {
70 get: (target, property) => {
71 // eslint-disable-next-line security/detect-object-injection
72 return (property in target) ? target[property] : {
73 errorMessage: `undefined error response '${property}'`,
74 };
75 },
76 });
77
78 const Header = {
79 Accept: 'Accept',
80 AcceptEncoding: 'Accept-Encoding',
81 CacheControl: 'Cache-Control',
82 ContentEncoding: 'Content-Encoding',
83 ContentLength: 'Content-Length',
84 ContentType: 'Content-Type',
85 ETag: 'ETag',
86 IfModifiedSince: 'If-Modified-Since',
87 IfNoneMatch: 'If-None-Match',
88 LastModified: 'Last-Modified',
89 RequestId: 'Request-ID',
90 Vary: 'Vary',
91 XCorrelationId: 'X-Correlation-ID',
92 XForwardedFor: 'X-Forwarded-For',
93 XForwardedProto: 'X-Forwarded-Proto',
94 XRealIP: 'X-Real-IP',
95 XRequestId: 'X-Request-ID',
96 };
97
98 module.exports = {
99 ContentType,
100 EncodingType,
101 EncodingTypeSuffix,
102 ErrorResponse: ErrorResponseDefaultProxy,
103 Header,
104 };