network-api-support 0.0.3 → 0.0.4
raw patch · 4 files changed
+18/−8 lines, 4 filesdep +time
Dependencies added: time
Files
- network-api-support.cabal +2/−1
- src/Network/Api/Support/Core.hs +4/−3
- src/Network/Api/Support/Request.hs +6/−0
- src/Network/Api/Support/Response.hs +6/−4
network-api-support.cabal view
@@ -1,5 +1,5 @@ Name: network-api-support-Version: 0.0.3+Version: 0.0.4 License: BSD3 License-File: LICENSE Author: Mark Hibberd <mark@hibberd.id.au>@@ -39,6 +39,7 @@ , http-types >= 0.6 , resourcet >= 0.3 , text >= 0.11+ , time >= 1 , tls >= 0.9 , tls-extra >= 0.4 , transformers >= 0.2
src/Network/Api/Support/Core.hs view
@@ -27,7 +27,7 @@ -> StdMethod -> Text -> RequestTransformer m- -> Responder b+ -> Responder m b -> m b runRequest settings stdmethod url transform = runRequest' settings url (transform <> setMethod (renderStdMethod stdmethod))@@ -40,12 +40,13 @@ ManagerSettings -> Text -> RequestTransformer m- -> Responder b+ -> Responder m b -> m b runRequest' settings url transform responder = do url' <- parseUrl $ unpack url let url'' = url' { checkStatus = const . const $ Nothing } -- handle all response codes.- liftM responder . withCustomManager settings . httpLbs $ appEndo transform url''+ let req = appEndo transform url''+ liftM (responder req) . withCustomManager settings . httpLbs $ req -- Build a custom connection manager and run ResourceT against that connection manager. -- This function is responsible for ensuring manager is always closed.
src/Network/Api/Support/Request.hs view
@@ -7,6 +7,7 @@ , setHeader , addHeader , stripHeader+, setCookieJar , setMethod , setBody , setBodyLazy@@ -21,6 +22,7 @@ import Data.Aeson import Data.CaseInsensitive import Data.Monoid+import Data.Time import Network.HTTP.Conduit @@ -56,6 +58,10 @@ stripHeader n = (Endo $ \r -> r { requestHeaders = filter (\x -> fst x == n) (requestHeaders r) })++-- | Register all cookies in cookie jar against request.+setCookieJar :: CookieJar -> UTCTime -> RequestTransformer m+setCookieJar cj now = Endo $ \r -> fst $ insertCookiesIntoRequest r cj now -- | Set the request method to be the specified name. setMethod :: B.ByteString -> RequestTransformer m
src/Network/Api/Support/Response.hs view
@@ -6,6 +6,8 @@ , basicResponder ) where +import Control.Monad.Trans.Resource+ import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL import Data.Attoparsec.Lazy@@ -16,8 +18,8 @@ import Network.HTTP.Types -- | Response handler.-type Responder a =- Response BL.ByteString -> a+type Responder m a =+ Request (ResourceT m) -> Response BL.ByteString -> a -- | Wrap up json parse and decode errors. data JsonResult a =@@ -52,6 +54,6 @@ (Success a) -> JsonSuccess a -- | Lift function handling status code and body into a responder.-basicResponder :: (Int -> BL.ByteString -> a) -> Responder a-basicResponder f (Response (Status code _) _ _ body) =+basicResponder :: (Int -> BL.ByteString -> a) -> Responder m a+basicResponder f _ (Response (Status code _) _ _ body) = f code body