git.iko.soy/typeable/servant
on master help sign in
Add KnownStatus typeclass
commita8184a2ee0c9987e618141c0c52f9110b927ea0b authorNathan van Doorn <nvd1234@gmail.com> dateSat 13 Jun 2020, 15:10 (6 years ago) parent4b225c2
2 files changed+154
servant/servant.cabal+1 servant/src/Servant/API/Status.hs+153
servant/servant.cabal+1
@@ -55,6 +55,7 @@ library
5555 Servant.API.RemoteHost
5656 Servant.API.ReqBody
5757 Servant.API.ResponseHeaders
58+ Servant.API.Status
5859 Servant.API.Stream
5960 Servant.API.Sub
6061 Servant.API.TypeLevel
servant/src/Servant/API/Status.hsnew file+153
@@ -0,0 +1,153 @@
1+{-# LANGUAGE DataKinds #-}
2+module Servant.API.Status where
3+
4+import Network.HTTP.Types.Status
5+import GHC.TypeNats
6+
7+-- | Witness that a type-level natural number corresponds to a HTTP status code
8+class KnownNat n => KnownStatus n where
9+ statusVal :: proxy n -> Status
10+
11+instance KnownStatus 100 where
12+ statusVal _ = status100
13+
14+instance KnownStatus 101 where
15+ statusVal _ = status101
16+
17+instance KnownStatus 200 where
18+ statusVal _ = status200
19+
20+instance KnownStatus 201 where
21+ statusVal _ = status201
22+
23+instance KnownStatus 202 where
24+ statusVal _ = status202
25+
26+instance KnownStatus 203 where
27+ statusVal _ = status203
28+
29+instance KnownStatus 204 where
30+ statusVal _ = status204
31+
32+instance KnownStatus 205 where
33+ statusVal _ = status205
34+
35+instance KnownStatus 206 where
36+ statusVal _ = status206
37+
38+instance KnownStatus 300 where
39+ statusVal _ = status300
40+
41+instance KnownStatus 301 where
42+ statusVal _ = status301
43+
44+instance KnownStatus 302 where
45+ statusVal _ = status302
46+
47+instance KnownStatus 303 where
48+ statusVal _ = status303
49+
50+instance KnownStatus 304 where
51+ statusVal _ = status304
52+
53+instance KnownStatus 305 where
54+ statusVal _ = status305
55+
56+instance KnownStatus 307 where
57+ statusVal _ = status307
58+
59+instance KnownStatus 308 where
60+ statusVal _ = status308
61+
62+instance KnownStatus 400 where
63+ statusVal _ = status400
64+
65+instance KnownStatus 401 where
66+ statusVal _ = status401
67+
68+instance KnownStatus 402 where
69+ statusVal _ = status402
70+
71+instance KnownStatus 403 where
72+ statusVal _ = status403
73+
74+instance KnownStatus 404 where
75+ statusVal _ = status404
76+
77+instance KnownStatus 405 where
78+ statusVal _ = status405
79+
80+instance KnownStatus 406 where
81+ statusVal _ = status406
82+
83+instance KnownStatus 407 where
84+ statusVal _ = status407
85+
86+instance KnownStatus 408 where
87+ statusVal _ = status408
88+
89+instance KnownStatus 409 where
90+ statusVal _ = status409
91+
92+instance KnownStatus 410 where
93+ statusVal _ = status410
94+
95+instance KnownStatus 411 where
96+ statusVal _ = status411
97+
98+instance KnownStatus 412 where
99+ statusVal _ = status412
100+
101+instance KnownStatus 413 where
102+ statusVal _ = status413
103+
104+instance KnownStatus 414 where
105+ statusVal _ = status414
106+
107+instance KnownStatus 415 where
108+ statusVal _ = status415
109+
110+instance KnownStatus 416 where
111+ statusVal _ = status416
112+
113+instance KnownStatus 417 where
114+ statusVal _ = status417
115+
116+instance KnownStatus 418 where
117+ statusVal _ = status418
118+
119+instance KnownStatus 422 where
120+ statusVal _ = status422
121+
122+instance KnownStatus 426 where
123+ statusVal _ = status426
124+
125+instance KnownStatus 428 where
126+ statusVal _ = status428
127+
128+instance KnownStatus 429 where
129+ statusVal _ = status429
130+
131+instance KnownStatus 431 where
132+ statusVal _ = status431
133+
134+instance KnownStatus 500 where
135+ statusVal _ = status500
136+
137+instance KnownStatus 501 where
138+ statusVal _ = status501
139+
140+instance KnownStatus 502 where
141+ statusVal _ = status502
142+
143+instance KnownStatus 503 where
144+ statusVal _ = status503
145+
146+instance KnownStatus 504 where
147+ statusVal _ = status504
148+
149+instance KnownStatus 505 where
150+ statusVal _ = status505
151+
152+instance KnownStatus 511 where
153+ statusVal _ = status511