summaryrefslogtreecommitdiff
path: root/src/Servant/API/Status.hs
blob: ee334fcd9d623143f1e318c8c7bcae226ed44bf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
{-# LANGUAGE DataKinds #-}
-- Flexible instances is necessary on GHC 8.4 and earlier
{-# LANGUAGE FlexibleInstances #-}
module Servant.API.Status where

import Network.HTTP.Types.Status
import GHC.TypeLits

-- | Witness that a type-level natural number corresponds to a HTTP status code
class KnownNat n => KnownStatus n where
  statusVal :: proxy n -> Status

instance KnownStatus 100 where
  statusVal _ = status100

instance KnownStatus 101 where
  statusVal _ = status101

instance KnownStatus 200 where
  statusVal _ = status200

instance KnownStatus 201 where
  statusVal _ = status201

instance KnownStatus 202 where
  statusVal _ = status202

instance KnownStatus 203 where
  statusVal _ = status203

instance KnownStatus 204 where
  statusVal _ = status204

instance KnownStatus 205 where
  statusVal _ = status205

instance KnownStatus 206 where
  statusVal _ = status206

instance KnownStatus 300 where
  statusVal _ = status300

instance KnownStatus 301 where
  statusVal _ = status301

instance KnownStatus 302 where
  statusVal _ = status302

instance KnownStatus 303 where
  statusVal _ = status303

instance KnownStatus 304 where
  statusVal _ = status304

instance KnownStatus 305 where
  statusVal _ = status305

instance KnownStatus 307 where
  statusVal _ = status307

instance KnownStatus 308 where
  statusVal _ = status308

instance KnownStatus 400 where
  statusVal _ = status400

instance KnownStatus 401 where
  statusVal _ = status401

instance KnownStatus 402 where
  statusVal _ = status402

instance KnownStatus 403 where
  statusVal _ = status403

instance KnownStatus 404 where
  statusVal _ = status404

instance KnownStatus 405 where
  statusVal _ = status405

instance KnownStatus 406 where
  statusVal _ = status406

instance KnownStatus 407 where
  statusVal _ = status407

instance KnownStatus 408 where
  statusVal _ = status408

instance KnownStatus 409 where
  statusVal _ = status409

instance KnownStatus 410 where
  statusVal _ = status410

instance KnownStatus 411 where
  statusVal _ = status411

instance KnownStatus 412 where
  statusVal _ = status412

instance KnownStatus 413 where
  statusVal _ = status413

instance KnownStatus 414 where
  statusVal _ = status414

instance KnownStatus 415 where
  statusVal _ = status415

instance KnownStatus 416 where
  statusVal _ = status416

instance KnownStatus 417 where
  statusVal _ = status417

instance KnownStatus 418 where
  statusVal _ = status418

instance KnownStatus 422 where
  statusVal _ = status422

instance KnownStatus 426 where
  statusVal _ = status426

instance KnownStatus 428 where
  statusVal _ = status428

instance KnownStatus 429 where
  statusVal _ = status429

instance KnownStatus 431 where
  statusVal _ = status431

instance KnownStatus 500 where
  statusVal _ = status500

instance KnownStatus 501 where
  statusVal _ = status501

instance KnownStatus 502 where
  statusVal _ = status502

instance KnownStatus 503 where
  statusVal _ = status503

instance KnownStatus 504 where
  statusVal _ = status504

instance KnownStatus 505 where
  statusVal _ = status505

instance KnownStatus 511 where
  statusVal _ = status511