git.iko.soy/typeable/servant
on master help sign in
Document http error codes
commit0ad60fe09306b76726c734d0179c2e4541cef450 authorAlexander Kjeldaas <ak@formalprivacy.com> dateFri 25 Mar 2016, 10:53 (11 years ago) parenta35aa16
1 file changed+210
servant-server/src/Servant/Server/Internal/ServantErr.hs+210
servant-server/src/Servant/Server/Internal/ServantErr.hs+210
@@ -23,6 +23,13 @@ responseServantErr ServantErr{..} = responseLBS status errHeaders errBody
2323 where
2424 status = HTTP.mkStatus errHTTPCode (BS.pack errReasonPhrase)
2525
26+-- | 'err300' Multiple Choices
27+--
28+-- Example:
29+--
30+-- > failingHandler :: ExceptT ServantErr IO ()
31+-- > failingHandler = throwErr $ err300 { errBody = "I can't choose." }
32+--
2633err300 :: ServantErr
2734err300 = ServantErr { errHTTPCode = 300
2835 , errReasonPhrase = "Multiple Choices"
@@ -30,6 +37,13 @@ err300 = ServantErr { errHTTPCode = 300
3037 , errHeaders = []
3138 }
3239
40+-- | 'err301' Moved Permanently
41+--
42+-- Example:
43+--
44+-- > failingHandler :: ExceptT ServantErr IO ()
45+-- > failingHandler = throwErr err301
46+--
3347err301 :: ServantErr
3448err301 = ServantErr { errHTTPCode = 301
3549 , errReasonPhrase = "Moved Permanently"
@@ -37,6 +51,13 @@ err301 = ServantErr { errHTTPCode = 301
3751 , errHeaders = []
3852 }
3953
54+-- | 'err302' Found
55+--
56+-- Example:
57+--
58+-- > failingHandler :: ExceptT ServantErr IO ()
59+-- > failingHandler = throwErr err302
60+--
4061err302 :: ServantErr
4162err302 = ServantErr { errHTTPCode = 302
4263 , errReasonPhrase = "Found"
@@ -44,6 +65,13 @@ err302 = ServantErr { errHTTPCode = 302
4465 , errHeaders = []
4566 }
4667
68+-- | 'err303' See Other
69+--
70+-- Example:
71+--
72+-- > failingHandler :: ExceptT ServantErr IO ()
73+-- > failingHandler = throwErr err303
74+--
4775err303 :: ServantErr
4876err303 = ServantErr { errHTTPCode = 303
4977 , errReasonPhrase = "See Other"
@@ -51,6 +79,13 @@ err303 = ServantErr { errHTTPCode = 303
5179 , errHeaders = []
5280 }
5381
82+-- | 'err304' Not Modified
83+--
84+-- Example:
85+--
86+-- > failingHandler :: ExceptT ServantErr IO ()
87+-- > failingHandler = throwErr err304
88+--
5489err304 :: ServantErr
5590err304 = ServantErr { errHTTPCode = 304
5691 , errReasonPhrase = "Not Modified"
@@ -58,6 +93,13 @@ err304 = ServantErr { errHTTPCode = 304
5893 , errHeaders = []
5994 }
6095
96+-- | 'err305' Use Proxy
97+--
98+-- Example:
99+--
100+-- > failingHandler :: ExceptT ServantErr IO ()
101+-- > failingHandler = throwErr err305
102+--
61103err305 :: ServantErr
62104err305 = ServantErr { errHTTPCode = 305
63105 , errReasonPhrase = "Use Proxy"
@@ -65,6 +107,13 @@ err305 = ServantErr { errHTTPCode = 305
65107 , errHeaders = []
66108 }
67109
110+-- | 'err307' Temporary Redirect
111+--
112+-- Example:
113+--
114+-- > failingHandler :: ExceptT ServantErr IO ()
115+-- > failingHandler = throwErr $ err307
116+--
68117err307 :: ServantErr
69118err307 = ServantErr { errHTTPCode = 307
70119 , errReasonPhrase = "Temporary Redirect"
@@ -72,6 +121,13 @@ err307 = ServantErr { errHTTPCode = 307
72121 , errHeaders = []
73122 }
74123
124+-- | 'err400' Bad Request
125+--
126+-- Example:
127+--
128+-- > failingHandler :: ExceptT ServantErr IO ()
129+-- > failingHandler = throwErr $ err400 { errBody = "Your request makes no sense to me." }
130+--
75131err400 :: ServantErr
76132err400 = ServantErr { errHTTPCode = 400
77133 , errReasonPhrase = "Bad Request"
@@ -79,6 +135,13 @@ err400 = ServantErr { errHTTPCode = 400
79135 , errHeaders = []
80136 }
81137
138+-- | 'err401' Unauthorized
139+--
140+-- Example:
141+--
142+-- > failingHandler :: ExceptT ServantErr IO ()
143+-- > failingHandler = throwErr $ err401 { errBody = "Your credentials are invalid." }
144+--
82145err401 :: ServantErr
83146err401 = ServantErr { errHTTPCode = 401
84147 , errReasonPhrase = "Unauthorized"
@@ -86,6 +149,13 @@ err401 = ServantErr { errHTTPCode = 401
86149 , errHeaders = []
87150 }
88151
152+-- | 'err402' Payment Required
153+--
154+-- Example:
155+--
156+-- > failingHandler :: ExceptT ServantErr IO ()
157+-- > failingHandler = throwErr $ err402 { errBody = "You have 0 credits. Please give me $$$." }
158+--
89159err402 :: ServantErr
90160err402 = ServantErr { errHTTPCode = 402
91161 , errReasonPhrase = "Payment Required"
@@ -93,6 +163,13 @@ err402 = ServantErr { errHTTPCode = 402
93163 , errHeaders = []
94164 }
95165
166+-- | 'err403' Forbidden
167+--
168+-- Example:
169+--
170+-- > failingHandler :: ExceptT ServantErr IO ()
171+-- > failingHandler = throwErr $ err403 { errBody = "Please login first." }
172+--
96173err403 :: ServantErr
97174err403 = ServantErr { errHTTPCode = 403
98175 , errReasonPhrase = "Forbidden"
@@ -100,6 +177,13 @@ err403 = ServantErr { errHTTPCode = 403
100177 , errHeaders = []
101178 }
102179
180+-- | 'err404' Not Found
181+--
182+-- Example:
183+--
184+-- > failingHandler :: ExceptT ServantErr IO ()
185+-- > failingHandler = throwErr $ err404 { errBody = "(╯°□°)╯︵ ┻━┻)." }
186+--
103187err404 :: ServantErr
104188err404 = ServantErr { errHTTPCode = 404
105189 , errReasonPhrase = "Not Found"
@@ -107,6 +191,13 @@ err404 = ServantErr { errHTTPCode = 404
107191 , errHeaders = []
108192 }
109193
194+-- | 'err405' Method Not Allowed
195+--
196+-- Example:
197+--
198+-- > failingHandler :: ExceptT ServantErr IO ()
199+-- > failingHandler = throwErr $ err405 { errBody = "Your account privileges does not allow for this. Please pay $$$." }
200+--
110201err405 :: ServantErr
111202err405 = ServantErr { errHTTPCode = 405
112203 , errReasonPhrase = "Method Not Allowed"
@@ -114,6 +205,13 @@ err405 = ServantErr { errHTTPCode = 405
114205 , errHeaders = []
115206 }
116207
208+-- | 'err406' Not Acceptable
209+--
210+-- Example:
211+--
212+-- > failingHandler :: ExceptT ServantErr IO ()
213+-- > failingHandler = throwErr $ err406
214+--
117215err406 :: ServantErr
118216err406 = ServantErr { errHTTPCode = 406
119217 , errReasonPhrase = "Not Acceptable"
@@ -121,6 +219,13 @@ err406 = ServantErr { errHTTPCode = 406
121219 , errHeaders = []
122220 }
123221
222+-- | 'err407' Proxy Authentication Required
223+--
224+-- Example:
225+--
226+-- > failingHandler :: ExceptT ServantErr IO ()
227+-- > failingHandler = throwErr $ err407
228+--
124229err407 :: ServantErr
125230err407 = ServantErr { errHTTPCode = 407
126231 , errReasonPhrase = "Proxy Authentication Required"
@@ -128,6 +233,13 @@ err407 = ServantErr { errHTTPCode = 407
128233 , errHeaders = []
129234 }
130235
236+-- | 'err409' Conflict
237+--
238+-- Example:
239+--
240+-- > failingHandler :: ExceptT ServantErr IO ()
241+-- > failingHandler = throwErr $ err409 { errBody = "Transaction conflicts with 59879cb56c7c159231eeacdd503d755f7e835f74" }
242+--
131243err409 :: ServantErr
132244err409 = ServantErr { errHTTPCode = 409
133245 , errReasonPhrase = "Conflict"
@@ -135,6 +247,13 @@ err409 = ServantErr { errHTTPCode = 409
135247 , errHeaders = []
136248 }
137249
250+-- | 'err410' Gone
251+--
252+-- Example:
253+--
254+-- > failingHandler :: ExceptT ServantErr IO ()
255+-- > failingHandler = throwErr $ err410 { errBody = "I know it was here at some point, but.. I blame bad luck." }
256+--
138257err410 :: ServantErr
139258err410 = ServantErr { errHTTPCode = 410
140259 , errReasonPhrase = "Gone"
@@ -142,6 +261,13 @@ err410 = ServantErr { errHTTPCode = 410
142261 , errHeaders = []
143262 }
144263
264+-- | 'err411' Length Required
265+--
266+-- Example:
267+--
268+-- > failingHandler :: ExceptT ServantErr IO ()
269+-- > failingHandler = throwErr $ err411
270+--
145271err411 :: ServantErr
146272err411 = ServantErr { errHTTPCode = 411
147273 , errReasonPhrase = "Length Required"
@@ -149,6 +275,13 @@ err411 = ServantErr { errHTTPCode = 411
149275 , errHeaders = []
150276 }
151277
278+-- | 'err412' Precondition Failed
279+--
280+-- Example:
281+--
282+-- > failingHandler :: ExceptT ServantErr IO ()
283+-- > failingHandler = throwErr $ err412 { errBody = "Precondition fail: x < 42 && y > 57" }
284+--
152285err412 :: ServantErr
153286err412 = ServantErr { errHTTPCode = 412
154287 , errReasonPhrase = "Precondition Failed"
@@ -156,6 +289,13 @@ err412 = ServantErr { errHTTPCode = 412
156289 , errHeaders = []
157290 }
158291
292+-- | 'err413' Request Entity Too Large
293+--
294+-- Example:
295+--
296+-- > failingHandler :: ExceptT ServantErr IO ()
297+-- > failingHandler = throwErr $ err413 { errBody = "Request exceeded 64k." }
298+--
159299err413 :: ServantErr
160300err413 = ServantErr { errHTTPCode = 413
161301 , errReasonPhrase = "Request Entity Too Large"
@@ -163,6 +303,13 @@ err413 = ServantErr { errHTTPCode = 413
163303 , errHeaders = []
164304 }
165305
306+-- | 'err414' Request-URI Too Large
307+--
308+-- Example:
309+--
310+-- > failingHandler :: ExceptT ServantErr IO ()
311+-- > failingHandler = throwErr $ err414 { errBody = "Maxiumu length is 64." }
312+--
166313err414 :: ServantErr
167314err414 = ServantErr { errHTTPCode = 414
168315 , errReasonPhrase = "Request-URI Too Large"
@@ -170,6 +317,13 @@ err414 = ServantErr { errHTTPCode = 414
170317 , errHeaders = []
171318 }
172319
320+-- | 'err415' Unsupported Media Type
321+--
322+-- Example:
323+--
324+-- > failingHandler :: ExceptT ServantErr IO ()
325+-- > failingHandler = throwErr $ err415 { errBody = "Supported media types: gif, png" }
326+--
173327err415 :: ServantErr
174328err415 = ServantErr { errHTTPCode = 415
175329 , errReasonPhrase = "Unsupported Media Type"
@@ -177,6 +331,13 @@ err415 = ServantErr { errHTTPCode = 415
177331 , errHeaders = []
178332 }
179333
334+-- | 'err416' Request range not satisfiable
335+--
336+-- Example:
337+--
338+-- > failingHandler :: ExceptT ServantErr IO ()
339+-- > failingHandler = throwErr $ err416 { errBody = "Valid range is [0, 424242]." }
340+--
180341err416 :: ServantErr
181342err416 = ServantErr { errHTTPCode = 416
182343 , errReasonPhrase = "Request range not satisfiable"
@@ -184,6 +345,13 @@ err416 = ServantErr { errHTTPCode = 416
184345 , errHeaders = []
185346 }
186347
348+-- | 'err417' Expectation Failed
349+--
350+-- Example:
351+--
352+-- > failingHandler :: ExceptT ServantErr IO ()
353+-- > failingHandler = throwErr $ err417 { errBody = "I found a quux in the request. This isn't going to work." }
354+--
187355err417 :: ServantErr
188356err417 = ServantErr { errHTTPCode = 417
189357 , errReasonPhrase = "Expectation Failed"
@@ -191,6 +359,13 @@ err417 = ServantErr { errHTTPCode = 417
191359 , errHeaders = []
192360 }
193361
362+-- | 'err500' Internal Server Error
363+--
364+-- Example:
365+--
366+-- > failingHandler :: ExceptT ServantErr IO ()
367+-- > failingHandler = throwErr $ err300 { errBody = "Exception in module A.B.C:55. Have a great day!" }
368+--
194369err500 :: ServantErr
195370err500 = ServantErr { errHTTPCode = 500
196371 , errReasonPhrase = "Internal Server Error"
@@ -198,6 +373,13 @@ err500 = ServantErr { errHTTPCode = 500
198373 , errHeaders = []
199374 }
200375
376+-- | 'err501' Not Implemented
377+--
378+-- Example:
379+--
380+-- > failingHandler :: ExceptT ServantErr IO ()
381+-- > failingHandler = throwErr $ err501 { errBody = "/v1/foo is not supported with quux in the request." }
382+--
201383err501 :: ServantErr
202384err501 = ServantErr { errHTTPCode = 501
203385 , errReasonPhrase = "Not Implemented"
@@ -205,6 +387,13 @@ err501 = ServantErr { errHTTPCode = 501
205387 , errHeaders = []
206388 }
207389
390+-- | 'err502' Bad Gateway
391+--
392+-- Example:
393+--
394+-- > failingHandler :: ExceptT ServantErr IO ()
395+-- > failingHandler = throwErr $ err502 { errBody = "Tried gateway foo, bar, and baz. None responded." }
396+--
208397err502 :: ServantErr
209398err502 = ServantErr { errHTTPCode = 502
210399 , errReasonPhrase = "Bad Gateway"
@@ -212,6 +401,13 @@ err502 = ServantErr { errHTTPCode = 502
212401 , errHeaders = []
213402 }
214403
404+-- | 'err503' Service Unavailable
405+--
406+-- Example:
407+--
408+-- > failingHandler :: ExceptT ServantErr IO ()
409+-- > failingHandler = throwErr $ err503 { errBody = "We're rewriting in PHP." }
410+--
215411err503 :: ServantErr
216412err503 = ServantErr { errHTTPCode = 503
217413 , errReasonPhrase = "Service Unavailable"
@@ -219,6 +415,13 @@ err503 = ServantErr { errHTTPCode = 503
219415 , errHeaders = []
220416 }
221417
418+-- | 'err504' Gateway Time-out
419+--
420+-- Example:
421+--
422+-- > failingHandler :: ExceptT ServantErr IO ()
423+-- > failingHandler = throwErr $ err504 { errBody = "Backend foobar did not respond in 5 seconds." }
424+--
222425err504 :: ServantErr
223426err504 = ServantErr { errHTTPCode = 504
224427 , errReasonPhrase = "Gateway Time-out"
@@ -226,6 +429,13 @@ err504 = ServantErr { errHTTPCode = 504
226429 , errHeaders = []
227430 }
228431
432+-- | 'err505' HTTP Version not supported
433+--
434+-- Example usage:
435+--
436+-- > failingHandler :: ExceptT ServantErr IO ()
437+-- > failingHandler = throwErr $ err505 { errBody = "I support HTTP/4.0 only." }
438+--
229439err505 :: ServantErr
230440err505 = ServantErr { errHTTPCode = 505
231441 , errReasonPhrase = "HTTP Version not supported"