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 +17/−10
- http-conduit-browser.cabal +1/−1
- test/main.hs +32/−0
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"