@@ -20,33 +20,24 @@ import Control.Monad
2020import Control.Monad.Base (MonadBase (..))
2121import Control.Monad.Catch (MonadCatch, MonadThrow)
2222import Control.Monad.Error.Class (MonadError (..))
23+import Control.Monad.Reader
24+import Control.Monad.Trans.Control (MonadBaseControl (..))
25+import Control.Monad.Trans.Except
2326import Data.ByteString.Builder (toLazyByteString)
2427import qualified Data.ByteString.Lazy as BSL
28+import Data.Foldable (toList)
29+import Data.Functor.Alt (Alt (..))
2530import Data.Monoid ((<>))
2631import Data.String (fromString)
2732import qualified Data.Text as T
2833import GHC.Exts (fromList)
29−{-import Control.Monad.IO.Class ()-}
30−import Control.Monad.Reader
31−import Control.Monad.Trans.Control (MonadBaseControl (..))
32−import Control.Monad.Trans.Except
33−{-import Data.ByteString.Lazy hiding (any, elem, filter, map,-}
34− {-null, pack)-}
35−import Data.Foldable (toList)
36−import Data.Functor.Alt (Alt (..))
37−import Data.Proxy
38−{-import Data.String.Conversions (cs)-}
3934import GHC.Generics
40−import Network.HTTP.Media (parseAccept, renderHeader, (//))
35+import Network.HTTP.Media (renderHeader)
4136import Network.HTTP.Types (hContentType, renderQuery,
4237 statusCode)
43−{-import Servant.API.ContentTypes-}
4438import Servant.Client.Core
45−{-import Servant.Common.BaseUrl-}
46−{-import Servant.Common.Req-}
4739
4840import qualified Network.HTTP.Client as Client
49−{-import qualified Network.HTTP.Types.Header as HTTP-}
5041
5142data ClientEnv
5243 = ClientEnv
@@ -97,15 +88,8 @@ performRequest req = do
9788 Left err -> throwError $ err
9889 Right response -> do
9990 let status = Client.responseStatus response
100− body = Client.responseBody response
101− hdrs = Client.responseHeaders response
10291 status_code = statusCode status
10392 ourResponse = clientResponseToReponse response
104− ct <- case lookup "Content-Type" $ Client.responseHeaders response of
105− Nothing -> pure $ "application"//"octet-stream"
106− Just t -> case parseAccept t of
107− Nothing -> throwError $ InvalidContentTypeHeader ourResponse
108− Just t' -> pure t'
10993 unless (status_code >= 200 && status_code < 300) $
11094 throwError $ FailureResponse ourResponse
11195 return ourResponse
@@ -135,24 +119,8 @@ requestToClientRequest burl r = Client.defaultRequest
135119 where
136120 (body, contentTypeHdr) = case requestBody r of
137121 Nothing -> (Client.RequestBodyLBS "", Nothing)
138− Just (RequestBodyLBS body, typ)
139− -> (Client.RequestBodyLBS body, Just (hContentType, renderHeader typ))
140−
141−{-performRequestCT :: MimeUnrender ct result => Proxy ct -> Method -> Req-}
142− {--> ClientM ([HTTP.Header], result)-}
143−{-performRequestCT ct reqMethod req = do-}
144− {-let acceptCTS = contentTypes ct-}
145− {-(_status, respBody, respCT, hdrs, _response) <--}
146− {-performRequest reqMethod (req { reqAccept = toList acceptCTS })-}
147− {-unless (any (matches respCT) acceptCTS) $ throwError $ UnsupportedContentType respCT respBody-}
148− {-case mimeUnrender ct respBody of-}
149− {-Left err -> throwError $ DecodeFailure err respCT respBody-}
150− {-Right val -> return (hdrs, val)-}
151−
152−{-performRequestNoBody :: Method -> Req -> ClientM [HTTP.Header]-}
153−{-performRequestNoBody reqMethod req = do-}
154− {-(_status, _body, _ct, hdrs, _response) <- performRequest reqMethod req-}
155− {-return hdrs-}
122+ Just (RequestBodyLBS body', typ)
123+ -> (Client.RequestBodyLBS body', Just (hContentType, renderHeader typ))
156124
157125catchConnectionError :: IO a -> IO (Either ServantError a)
158126catchConnectionError action =