rest-client 0.3.0.0 → 0.4
raw patch · 3 files changed
+26/−18 lines, 3 filesdep −aesondep −exceptions
Dependencies removed: aeson, exceptions
Files
- CHANGELOG.md +4/−0
- rest-client.cabal +2/−4
- src/Rest/Client/Internal.hs +20/−14
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Changelog +## 0.4++* Moved functionality from rest-gen into this package, you should regenerate haskell clients+ ## 0.3.0.0 * Replace runT' -> runT, use runResourceT (runT ...) if you want the old behavior
rest-client.cabal view
@@ -1,5 +1,5 @@ name: rest-client-version: 0.3.0.0+version: 0.4 description: Utility library for use in generated API client libraries. synopsis: Utility library for use in generated API client libraries. maintainer: code@silk.co@@ -25,7 +25,6 @@ Rest.Client.Internal build-depends: base == 4.*- , aeson >= 0.7 && < 0.8 , aeson-utils >= 0.2.1 && < 0.3 , bytestring >= 0.9 && < 0.11 , case-insensitive >= 0.4 && < 1.3@@ -37,9 +36,8 @@ , hxt-pickle-utils == 0.1.* , monad-control == 0.3.* , mtl >= 2.0 && < 2.3- , resourcet == 1.1.* , primitive == 0.5.*- , exceptions >= 0.5 && < 0.7+ , resourcet == 1.1.* , rest-types == 1.10.* , tostring == 0.2.* , transformers-base == 0.4.*
src/Rest/Client/Internal.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE- CPP- , FlexibleInstances+ FlexibleInstances , OverlappingInstances+ , OverloadedStrings , UndecidableInstances #-} module Rest.Client.Internal@@ -25,12 +25,16 @@ , toJSON , fromXML , toXML++ , makeReq+ , doReq ) where import Control.Arrow import Control.Monad import Control.Monad.Cont import Data.Aeson.Utils (FromJSON, ToJSON, decodeV, encode)+import Data.Default (def) import Data.List import Data.Maybe import Data.Monoid@@ -38,22 +42,17 @@ import Data.String.ToString import Network.HTTP.Conduit hiding (method, responseBody, responseHeaders) import Network.HTTP.Types hiding (statusCode, statusMessage)+import Rest.Types.Error+import Rest.Types.ShowUrl import Text.XML.HXT.Arrow.Pickle-#if MIN_VERSION_http_conduit(2,0,0)-import Data.Default (def)-#endif- import qualified Data.ByteString.Char8 as CH import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Lazy.UTF8 as L import qualified Network.HTTP.Conduit as HTTP import qualified Network.HTTP.Types as HTTP--import Rest.Types.Error-import Rest.Types.ShowUrl--import qualified Network.URI.Encode as URI-import qualified Text.Xml.Pickle as P+import qualified Network.HTTP.Types.Header+import qualified Network.URI.Encode as URI+import qualified Text.Xml.Pickle as P import Rest.Client.Base @@ -81,8 +80,11 @@ splitHost :: String -> (String, String) splitHost hst = break (== '/') hst -doRequest :: (ApiStateC m, MonadIO m) => ApiRequest -> m (Response L.ByteString)-doRequest (ApiRequest m ur ps rhds bd) =+doRequest :: ApiStateC m => (L.ByteString -> Rest.Types.Error.Reason e) -> (L.ByteString -> a) -> ApiRequest -> m (ApiResponse e a)+doRequest a b = liftM (parseResult a b) . doReq++doReq :: (ApiStateC m, MonadIO m) => ApiRequest -> m (Response L.ByteString)+doReq (ApiRequest m ur ps rhds bd) = do mn <- fmap manager askApiInfo hst <- fmap apiHost askApiInfo prt <- fmap apiPort askApiInfo@@ -134,4 +136,8 @@ ) v where err = error ("Error parsing XML in api binding, this should not happen: " ++ L.toString v) toXML = L.fromString . P.toXML+++makeReq :: String -> String -> [[String]] -> [(String, String)] -> Network.HTTP.Types.Header.RequestHeaders -> L.ByteString -> ApiRequest+makeReq meth v ls pList hs body = ApiRequest meth (intercalate "/" (v : map URI.encode (concat ls))) pList hs body