git.iko.soy/typeable/servant
on master help sign in
Fixes for ServantErr in servant-client
commit1447221a1602450184b61bacb9c678140ddaa044 authorJulian K. Arni <jkarni@gmail.com> dateSun 3 May 2015, 01:05 (11 years ago) parent45f8c2c
3 files changed+15−16
servant-client/src/Servant/Client.hs−2 servant-client/test/Servant/ClientSpec.hs+6−7 servant/src/Servant/API.hs+9−7
servant-client/src/Servant/Client.hs−2
@@ -37,8 +37,6 @@ import Network.HTTP.Media
3737import qualified Network.HTTP.Types as H
3838import qualified Network.HTTP.Types.Header as HTTP
3939import Servant.API
40−import Servant.API.ResponseHeaders
41−import Servant.API.ContentTypes
4240import Servant.Common.BaseUrl
4341import Servant.Common.Req
4442
servant-client/test/Servant/ClientSpec.hs+6−7
@@ -108,15 +108,14 @@ server = serve api (
108108 :<|> return
109109 :<|> (\ name -> case name of
110110 Just "alice" -> return alice
111− Just name -> left (400, name ++ " not found")
112−
113− Nothing -> left (400, "missing parameter"))
111+ Just name -> left $ ServantErr 400 (name ++ " not found") "" []
112+ Nothing -> left $ ServantErr 400 "missing parameter" "" [])
114113 :<|> (\ names -> return (zipWith Person names [0..]))
115114 :<|> return
116115 :<|> (\ name -> case name of
117116 Just "alice" -> return alice
118− Just name -> left (400, name ++ " not found")
119− Nothing -> left (400, "missing parameter"))
117+ Just name -> left $ ServantErr 400 (name ++ " not found") "" []
118+ Nothing -> left $ ServantErr 400 "missing parameter" "" [])
120119 :<|> (\ names -> return (zipWith Person names [0..]))
121120 :<|> return
122121 :<|> (\ _request respond -> respond $ responseLBS ok200 [] "rawSuccess")
@@ -262,7 +261,7 @@ spec = do
262261 let test :: (WrappedApi, String) -> Spec
263262 test (WrappedApi api, desc) =
264263 it desc $
265− withWaiDaemon (return (serve api (left (500, "error message")))) $
264+ withWaiDaemon (return (serve api (left $ ServantErr 500 "error message" "" []))) $
266265 \ host -> do
267266 let getResponse :: BaseUrl -> EitherT ServantError IO ()
268267 getResponse = client api
@@ -308,7 +307,7 @@ spec = do
308307 _ -> fail $ "expected InvalidContentTypeHeader, but got " <> show res
309308
310309data WrappedApi where
311− WrappedApi :: (HasServer (Canonicalize api), Server api ~ EitherT (Int, String) IO a,
310+ WrappedApi :: (HasServer (Canonicalize api), Server api ~ EitherT ServantErr IO a,
312311 HasClient (Canonicalize api), Client api ~ (BaseUrl -> EitherT ServantError IO ())) =>
313312 Proxy api -> WrappedApi
314313
servant/src/Servant/API.hs+9−7
@@ -1,5 +1,5 @@
1−{-# LANGUAGE TypeFamilies #-}
2−{-# LANGUAGE TypeOperators #-}
1+{-# LANGUAGE TypeFamilies #-}
2+{-# LANGUAGE TypeOperators #-}
33{-# LANGUAGE UndecidableInstances #-}
44module Servant.API (
55
@@ -61,14 +61,14 @@ module Servant.API (
6161import Data.Proxy (Proxy (..))
6262import Servant.API.Alternative ((:<|>) (..))
6363import Servant.API.Capture (Capture)
64−import Servant.API.ContentTypes (Accept(..), FormUrlEncoded,
64+import Servant.API.ContentTypes (Accept (..), FormUrlEncoded,
6565 FromFormUrlEncoded (..), JSON,
6666 MimeRender (..),
6767 MimeUnrender (..), OctetStream,
6868 PlainText, ToFormUrlEncoded (..))
6969import Servant.API.Delete (Delete)
7070import Servant.API.Get (Get)
71−import Servant.API.Header (Header(..))
71+import Servant.API.Header (Header (..))
7272import Servant.API.MatrixParam (MatrixFlag, MatrixParam,
7373 MatrixParams)
7474import Servant.API.Patch (Patch)
@@ -78,9 +78,11 @@ import Servant.API.QueryParam (QueryFlag, QueryParam,
7878 QueryParams)
7979import Servant.API.Raw (Raw)
8080import Servant.API.ReqBody (ReqBody)
81−import Servant.API.ResponseHeaders (Headers, getHeaders,
82− getHeadersHList, getResponse,
83− buildHeadersTo, addHeader)
81+import Servant.API.ResponseHeaders (AddHeader (addHeader),
82+ BuildHeadersTo (buildHeadersTo),
83+ GetHeaders (getHeaders),
84+ HList (..), Headers (..),
85+ getHeadersHList, getResponse)
8486import Servant.API.Sub ((:>))
8587import Servant.Common.Text (FromText (..), ToText (..))
8688import Servant.Utils.Links (HasLink (..), IsElem, IsElem',