1 | module Pact.WAI.StatusCode
3 | import Derive.Prelude
5 | import Data.Nat.Order
7 | %language ElabReflection
16 | record StatusCode where
17 | constructor MkStatusCode
19 | { auto 0 gte100: 100 <= code = True }
20 | { auto 0 lte599: code <= 599 = True }
22 | %runElab derive "StatusCode" [Show,Eq,Ord]
25 | implementation Interpolation StatusCode where
26 | interpolate (MkStatusCode code) = show code
30 | ok = MkStatusCode 200
33 | badRequest : StatusCode
34 | badRequest = MkStatusCode 400
37 | unauthorized : StatusCode
38 | unauthorized = MkStatusCode 401
41 | forbidden : StatusCode
42 | forbidden = MkStatusCode 403
45 | notFound : StatusCode
46 | notFound = MkStatusCode 404
49 | internalServerError : StatusCode
50 | internalServerError = MkStatusCode 500
55 | code_100 : StatusCode
56 | code_100 = MkStatusCode 100
60 | code_101 : StatusCode
61 | code_101 = MkStatusCode 101
65 | code_102 : StatusCode
66 | code_102 = MkStatusCode 102
70 | code_103 : StatusCode
71 | code_103 = MkStatusCode 103
76 | code_200 : StatusCode
77 | code_200 = MkStatusCode 200
81 | code_201 : StatusCode
82 | code_201 = MkStatusCode 201
86 | code_202 : StatusCode
87 | code_202 = MkStatusCode 202
91 | code_203 : StatusCode
92 | code_203 = MkStatusCode 203
96 | code_204 : StatusCode
97 | code_204 = MkStatusCode 204
101 | code_205 : StatusCode
102 | code_205 = MkStatusCode 205
106 | code_206 : StatusCode
107 | code_206 = MkStatusCode 206
111 | code_207 : StatusCode
112 | code_207 = MkStatusCode 207
116 | code_208 : StatusCode
117 | code_208 = MkStatusCode 208
121 | code_226 : StatusCode
122 | code_226 = MkStatusCode 226
126 | code_300 : StatusCode
127 | code_300 = MkStatusCode 300
131 | code_301 : StatusCode
132 | code_301 = MkStatusCode 301
136 | code_302 : StatusCode
137 | code_302 = MkStatusCode 302
141 | code_303 : StatusCode
142 | code_303 = MkStatusCode 303
146 | code_304 : StatusCode
147 | code_304 = MkStatusCode 304
151 | code_305 : StatusCode
152 | code_305 = MkStatusCode 305
156 | code_307 : StatusCode
157 | code_307 = MkStatusCode 307
161 | code_308 : StatusCode
162 | code_308 = MkStatusCode 308
166 | code_400 : StatusCode
167 | code_400 = MkStatusCode 400
171 | code_401 : StatusCode
172 | code_401 = MkStatusCode 401
176 | code_403 : StatusCode
177 | code_403 = MkStatusCode 403
181 | code_404 : StatusCode
182 | code_404 = MkStatusCode 404
186 | code_405 : StatusCode
187 | code_405 = MkStatusCode 405
191 | code_406 : StatusCode
192 | code_406 = MkStatusCode 406
196 | code_407 : StatusCode
197 | code_407 = MkStatusCode 407
201 | code_408 : StatusCode
202 | code_408 = MkStatusCode 408
206 | code_409 : StatusCode
207 | code_409 = MkStatusCode 409
211 | code_410 : StatusCode
212 | code_410 = MkStatusCode 410
215 | code_411 : StatusCode
216 | code_411 = MkStatusCode 411
220 | code_412 : StatusCode
221 | code_412 = MkStatusCode 412
225 | code_413 : StatusCode
226 | code_413 = MkStatusCode 413
230 | code_414 : StatusCode
231 | code_414 = MkStatusCode 414
235 | code_415 : StatusCode
236 | code_415 = MkStatusCode 415
240 | code_416 : StatusCode
241 | code_416 = MkStatusCode 416
245 | code_417 : StatusCode
246 | code_417 = MkStatusCode 417
250 | code_418 : StatusCode
251 | code_418 = MkStatusCode 418
255 | code_421 : StatusCode
256 | code_421 = MkStatusCode 421
260 | code_422 : StatusCode
261 | code_422 = MkStatusCode 422
265 | code_423 : StatusCode
266 | code_423 = MkStatusCode 423
270 | code_424 : StatusCode
271 | code_424 = MkStatusCode 424
275 | code_425 : StatusCode
276 | code_425 = MkStatusCode 425
280 | code_426 : StatusCode
281 | code_426 = MkStatusCode 426
285 | code_428 : StatusCode
286 | code_428 = MkStatusCode 428
290 | code_429 : StatusCode
291 | code_429 = MkStatusCode 429
295 | code_431 : StatusCode
296 | code_431 = MkStatusCode 431
300 | code_451 : StatusCode
301 | code_451 = MkStatusCode 451
305 | code_500 : StatusCode
306 | code_500 = MkStatusCode 500
310 | code_501 : StatusCode
311 | code_501 = MkStatusCode 501
315 | code_502 : StatusCode
316 | code_502 = MkStatusCode 502
320 | code_503 : StatusCode
321 | code_503 = MkStatusCode 503
325 | code_504 : StatusCode
326 | code_504 = MkStatusCode 504
330 | code_505 : StatusCode
331 | code_505 = MkStatusCode 505
335 | code_506 : StatusCode
336 | code_506 = MkStatusCode 506
340 | code_507 : StatusCode
341 | code_507 = MkStatusCode 507
345 | code_508 : StatusCode
346 | code_508 = MkStatusCode 508
350 | code_510 : StatusCode
351 | code_510 = MkStatusCode 510
355 | code_511 : StatusCode
356 | code_511 = MkStatusCode 511
363 | statusMessage : StatusCode -> String
364 | statusMessage code = case code of
365 | (MkStatusCode 100) => "Continue"
366 | (MkStatusCode 101) => "Switching Protocols"
367 | (MkStatusCode 102) => "Processing"
368 | (MkStatusCode 103) => "Early Hints"
369 | (MkStatusCode 200) => "OK"
370 | (MkStatusCode 201) => "Created"
371 | (MkStatusCode 202) => "Accepted"
372 | (MkStatusCode 203) => "Non-Authoritative Information"
373 | (MkStatusCode 204) => "No Content"
374 | (MkStatusCode 205) => "Reset Content"
375 | (MkStatusCode 206) => "Partial Content"
376 | (MkStatusCode 207) => "Multi-Status"
377 | (MkStatusCode 208) => "Already Reported"
378 | (MkStatusCode 226) => "IM Used"
379 | (MkStatusCode 300) => "Multiple Choices"
380 | (MkStatusCode 301) => "Moved Permanently"
381 | (MkStatusCode 302) => "Found"
382 | (MkStatusCode 303) => "See Other"
383 | (MkStatusCode 304) => "Not Modified"
384 | (MkStatusCode 305) => "Use Proxy"
385 | (MkStatusCode 307) => "Temporary Redirect"
386 | (MkStatusCode 308) => "Permanent Redirect"
387 | (MkStatusCode 400) => "Bad Request"
388 | (MkStatusCode 401) => "Unauthorized"
389 | (MkStatusCode 403) => "Forbidden"
390 | (MkStatusCode 404) => "Not Found"
391 | (MkStatusCode 405) => "Method Not Allowed"
392 | (MkStatusCode 406) => "Not Acceptable"
393 | (MkStatusCode 407) => "Proxy Authentication Required"
394 | (MkStatusCode 408) => "Request Timeout"
395 | (MkStatusCode 409) => "Conflict"
396 | (MkStatusCode 410) => "Gone"
397 | (MkStatusCode 411) => "Length Required"
398 | (MkStatusCode 412) => "Precondition Failed"
399 | (MkStatusCode 413) => "Payload Too Large"
400 | (MkStatusCode 414) => "URI Too Long"
401 | (MkStatusCode 415) => "Unsupported Media Type"
402 | (MkStatusCode 416) => "Range Not Satisfiable"
403 | (MkStatusCode 417) => "Expectation Failed"
404 | (MkStatusCode 418) => "I'm a teapot"
405 | (MkStatusCode 421) => "Misdirected Request"
406 | (MkStatusCode 422) => "Unprocessable Entity"
407 | (MkStatusCode 423) => "Locked"
408 | (MkStatusCode 424) => "Failed Dependency"
409 | (MkStatusCode 425) => "Too Early"
410 | (MkStatusCode 426) => "Upgrade Required"
411 | (MkStatusCode 428) => "Precondition Required"
412 | (MkStatusCode 429) => "Too Many Requests"
413 | (MkStatusCode 431) => "Request Header Fields Too Large"
414 | (MkStatusCode 451) => "Unavailable For Legal Reasons"
415 | (MkStatusCode 500) => "Internal Server Error"
416 | (MkStatusCode 501) => "Not Implemented"
417 | (MkStatusCode 502) => "Bad Gateway"
418 | (MkStatusCode 503) => "Service Unavailable"
419 | (MkStatusCode 504) => "Gateway Timeout"
420 | (MkStatusCode 505) => "HTTP Version Not Supported"
421 | (MkStatusCode 506) => "Variant Also Negotiates"
422 | (MkStatusCode 507) => "Insufficient Storage"
423 | (MkStatusCode 508) => "Loop Detected"
424 | (MkStatusCode 510) => "Not Extended"
425 | (MkStatusCode 511) => "Network Authentication Required"
426 | (MkStatusCode code) => "Unknown Status Code"