From b548f8df86396f0e33f57b3e60ff7edaf267740a Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 16 Jan 2017 09:51:27 +0200 Subject: [PATCH 1/3] Add MonadBaseControl IO ClientM instance --- servant-client/servant-client.cabal | 2 ++ servant-client/src/Servant/Common/Req.hs | 28 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/servant-client/servant-client.cabal b/servant-client/servant-client.cabal index 65983a3d..c394b708 100644 --- a/servant-client/servant-client.cabal +++ b/servant-client/servant-client.cabal @@ -47,12 +47,14 @@ library , http-client-tls >= 0.2.2 && < 0.4 , http-media >= 0.6.2 && < 0.7 , http-types >= 0.8.6 && < 0.10 + , monad-control >= 1.0.0.4 && < 1.1 , network-uri >= 2.6 && < 2.7 , safe >= 0.3.9 && < 0.4 , servant == 0.9.* , string-conversions >= 0.3 && < 0.5 , text >= 1.2 && < 1.3 , transformers >= 0.3 && < 0.6 + , transformers-base >= 0.4.4 && < 0.5 , transformers-compat >= 0.4 && < 0.6 , mtl hs-source-dirs: src diff --git a/servant-client/src/Servant/Common/Req.hs b/servant-client/src/Servant/Common/Req.hs index 57471967..7d107c7c 100644 --- a/servant-client/src/Servant/Common/Req.hs +++ b/servant-client/src/Servant/Common/Req.hs @@ -1,9 +1,11 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE DeriveDataTypeable #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} module Servant.Common.Req where @@ -24,8 +26,10 @@ import Control.Monad.Trans.Except import GHC.Generics +import Control.Monad.Base (MonadBase (..)) import Control.Monad.IO.Class () import Control.Monad.Reader +import Control.Monad.Trans.Control (MonadBaseControl (..)) import Data.ByteString.Lazy hiding (pack, filter, map, null, elem, any) import Data.String import Data.String.Conversions @@ -180,6 +184,18 @@ newtype ClientM a = ClientM { runClientM' :: ReaderT ClientEnv (ExceptT ServantE , MonadThrow, MonadCatch ) +instance MonadBase IO ClientM where + liftBase = ClientM . liftBase + +instance MonadBaseControl IO ClientM where + type StM ClientM a = Either ServantError a + + -- liftBaseWith :: (RunInBase ClientM IO -> IO a) -> ClientM a + liftBaseWith f = ClientM (liftBaseWith (\g -> f (g . runClientM'))) + + -- restoreM :: StM ClientM a -> ClientM a + restoreM st = ClientM (restoreM st) + runClientM :: ClientM a -> ClientEnv -> IO (Either ServantError a) runClientM cm env = runExceptT $ (flip runReaderT env) $ runClientM' cm From 6faa742c4ab5ede0e468d110e2f30369c09fcc09 Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 16 Jan 2017 10:02:54 +0200 Subject: [PATCH 2/3] Update changelog --- servant-client/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/servant-client/CHANGELOG.md b/servant-client/CHANGELOG.md index 624743d9..d147aa83 100644 --- a/servant-client/CHANGELOG.md +++ b/servant-client/CHANGELOG.md @@ -1,3 +1,8 @@ +0.10 +---- + +* Add MonadBase and MonadBaseControl instances for ClientM + 0.9.1.1 ------- From e6206cc51eb2ad7b3ae0ae8a008be387f81c513b Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 16 Jan 2017 10:09:40 +0200 Subject: [PATCH 3/3] Add more changelog entries --- servant-client/CHANGELOG.md | 4 ++++ servant-server/CHANGELOG.md | 6 ++++++ servant/CHANGELOG.md | 1 + 3 files changed, 11 insertions(+) diff --git a/servant-client/CHANGELOG.md b/servant-client/CHANGELOG.md index d147aa83..3d77001b 100644 --- a/servant-client/CHANGELOG.md +++ b/servant-client/CHANGELOG.md @@ -2,6 +2,10 @@ ---- * Add MonadBase and MonadBaseControl instances for ClientM + ([#663](https://github.com/haskell-servant/servant/issues/663)) + +* client asks for any content-type in Accept contentTypes non-empty list + ([#615](https://github.com/haskell-servant/servant/pull/615)) 0.9.1.1 ------- diff --git a/servant-server/CHANGELOG.md b/servant-server/CHANGELOG.md index 0046372d..355a0ff9 100644 --- a/servant-server/CHANGELOG.md +++ b/servant-server/CHANGELOG.md @@ -1,3 +1,9 @@ +0.10 +---- + +* Add `err422` Unprocessable Entity + ([#646](https://github.com/haskell-servant/servant/pull/646)) + 0.7.1 ------ diff --git a/servant/CHANGELOG.md b/servant/CHANGELOG.md index 54b985f5..49db0263 100644 --- a/servant/CHANGELOG.md +++ b/servant/CHANGELOG.md @@ -2,6 +2,7 @@ ------ * Use `NT` from `natural-transformation` for `Enter` + ([#616](https://github.com/haskell-servant/servant/issues/616)) 0.9.1 ------