packages feed

http-conduit-browser 1.6.3.1 → 1.6.4

raw patch · 3 files changed

+50/−11 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Network.HTTP.Conduit.Browser2: getOverrideHeader :: HeaderName -> BrowserAction (Maybe ByteString)
+ Network.HTTP.Conduit.Browser2: setOverrideHeader :: HeaderName -> Maybe ByteString -> BrowserAction ()

Files

Network/HTTP/Conduit/Browser2.hs view
@@ -96,6 +96,8 @@     , getOverrideHeaders     , setOverrideHeaders     , withOverrideHeaders+    , getOverrideHeader+    , setOverrideHeader     , insertOverrideHeader     , deleteOverrideHeader     , withOverrideHeader@@ -364,10 +366,10 @@ -- | Specifies Headers that should be added to 'Request', -- these will override Headers already specified in 'requestHeaders'. ----- > do insertOverrideHeader ("User-Agent", "http-conduit")+-- > do insertOverrideHeader ("User-Agent", "rat") -- >    insertOverrideHeader ("Connection", "keep-alive")--- >    makeRequest def{requestHeaders = [("User-Agent", "another agent"), ("Accept", "everything/digestible")]}--- > > User-Agent: http-conduit+-- >    makeRequest def{requestHeaders = [("User-Agent", "kitten"), ("Accept", "everything/digestible")]}+-- > > User-Agent: rat -- > > Accept: everything/digestible -- > > Connection: keep-alive getOverrideHeaders :: BrowserAction HT.RequestHeaders@@ -384,16 +386,21 @@   out <- b   setOverrideHeaders current   return out+getOverrideHeader :: HT.HeaderName -> BrowserAction (Maybe BS.ByteString)+getOverrideHeader b = get >>= \ a -> return $ Map.lookup b (overrideHeaders a)+setOverrideHeader :: HT.HeaderName -> Maybe BS.ByteString -> BrowserAction ()+setOverrideHeader b Nothing = deleteOverrideHeader b+setOverrideHeader b (Just c) = insertOverrideHeader (b, c) insertOverrideHeader :: HT.Header -> BrowserAction () insertOverrideHeader (b, c) = get >>= \ a -> put a {overrideHeaders = Map.insert b c (overrideHeaders a)} deleteOverrideHeader :: HT.HeaderName -> BrowserAction () deleteOverrideHeader b = get >>= \ a -> put a {overrideHeaders = Map.delete b (overrideHeaders a)} withOverrideHeader :: HT.Header -> BrowserAction a -> BrowserAction a-withOverrideHeader a b = do-  current <- getOverrideHeaders-  insertOverrideHeader a-  out <- b-  setOverrideHeaders current+withOverrideHeader (a,b) c = do+  current <- getOverrideHeader a+  insertOverrideHeader (a,b)+  out <- c+  setOverrideHeader a current   return out -- | What string to report our user-agent as. -- if Nothing will not send user-agent unless one is specified in 'Request'@@ -407,10 +414,10 @@ setUserAgent (Just b) = insertOverrideHeader (HT.hUserAgent, b) withUserAgent      :: Maybe BS.ByteString -> BrowserAction a -> BrowserAction a withUserAgent a b = do-  current <- getOverrideHeaders+  current <- getUserAgent   setUserAgent a   out <- b-  setOverrideHeaders current+  setUserAgent current   return out -- | Function to check the status code. Note that this will run after all redirects are performed. -- if Nothing uses Request's 'checkStatus'
http-conduit-browser.cabal view
@@ -1,5 +1,5 @@ name:            http-conduit-browser-version:         1.6.3.1+version:         1.6.4 license:         BSD3 license-file:    LICENSE author:          Myles C. Maxfield <myles.maxfield@gmail.com>
test/main.hs view
@@ -2,6 +2,8 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE DeriveDataTypeable #-} import Test.Hspec+import Control.Applicative+import Control.Monad import Control.Exception (Exception, toException) import qualified Data.ByteString as S import Network.Wai hiding (requestBody)@@ -185,6 +187,36 @@                 if (lazyToStrict $ responseBody elbs) /= fromString "everything/digestible"                      then error "Shouldn't have deleted Accept header!"                      else return ()+            it "withOverrideHeader: doesn't override additional headers" $ do+                tid <- forkIO $ run 3012 app+                request1 <- parseUrl "http://127.0.0.1:3012/accept"+                request2 <- parseUrl "http://127.0.0.1:3012/useragent"+                (bs1, bs2) <- withManager $ flip browse $ do+                    insertOverrideHeader ("User-Agent", "another agent")+                    withOverrideHeader ("User-Agent", "http-conduit") $+                        insertOverrideHeader ("Accept", "everything/digestible")+                    (,) <$> (lazyToStrict . responseBody <$> makeRequestLbs request1)+                        <*> (lazyToStrict . responseBody <$> makeRequestLbs request2)+                killThread tid+                when (bs1 /= fromString "everything/digestible") $+                    error "Shouldn't have deleted Accept header!"+                when (bs2 /= "another agent") $+                    error "Shouldn't have overriden user agent!"+            it "withUserAgent: doesn't override additional headers" $ do+                tid <- forkIO $ run 3012 app+                request1 <- parseUrl "http://127.0.0.1:3012/accept"+                request2 <- parseUrl "http://127.0.0.1:3012/useragent"+                (bs1, bs2) <- withManager $ flip browse $ do+                    setUserAgent $ Just "another agent"+                    withUserAgent (Just "different agent") $+                        insertOverrideHeader ("Accept", "everything/digestible")+                    (,) <$> (lazyToStrict . responseBody <$> makeRequestLbs request1)+                        <*> (lazyToStrict . responseBody <$> makeRequestLbs request2)+                killThread tid+                when (bs1 /= fromString "everything/digestible") $+                    error "Shouldn't have deleted Accept header!"+                when (bs2 /= "another agent") $+                    error "Shouldn't have overriden user agent!"             it "authorities get set correctly" $ do                 tid <- forkIO $ run 3013 app                 request <- parseUrl "http://127.0.0.1:3013/authorities"