packages feed

http-conduit 2.3.1 → 2.3.2

raw patch · 4 files changed

+35/−7 lines, 4 filesdep ~http-clientPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: http-client

API changes (from Hackage documentation)

+ Network.HTTP.Client.Conduit: ConnectionClosed :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: ConnectionFailure :: SomeException -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: ConnectionTimeout :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: Cookie :: ByteString -> ByteString -> UTCTime -> ByteString -> ByteString -> UTCTime -> UTCTime -> Bool -> Bool -> Bool -> Bool -> Cookie
+ Network.HTTP.Client.Conduit: HttpExceptionRequest :: Request -> HttpExceptionContent -> HttpException
+ Network.HTTP.Client.Conduit: HttpZlibException :: ZlibException -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: IncompleteHeaders :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: InternalException :: SomeException -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidChunkHeaders :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidDestinationHost :: ByteString -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidHeader :: ByteString -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidProxyEnvironmentVariable :: Text -> Text -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidProxySettings :: Text -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidStatusLine :: ByteString -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: InvalidUrlException :: String -> String -> HttpException
+ Network.HTTP.Client.Conduit: NoResponseDataReceived :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: OverlongHeaders :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: Proxy :: ByteString -> Int -> Proxy
+ Network.HTTP.Client.Conduit: ProxyConnectException :: ByteString -> Int -> Status -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: RequestBodyBS :: ByteString -> RequestBody
+ Network.HTTP.Client.Conduit: RequestBodyBuilder :: Int64 -> Builder -> RequestBody
+ Network.HTTP.Client.Conduit: RequestBodyIO :: IO RequestBody -> RequestBody
+ Network.HTTP.Client.Conduit: RequestBodyLBS :: ByteString -> RequestBody
+ Network.HTTP.Client.Conduit: RequestBodyStream :: Int64 -> GivesPopper () -> RequestBody
+ Network.HTTP.Client.Conduit: RequestBodyStreamChunked :: GivesPopper () -> RequestBody
+ Network.HTTP.Client.Conduit: ResponseBodyTooShort :: Word64 -> Word64 -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: ResponseTimeout :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: StatusCodeException :: Response () -> ByteString -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: StreamFileStatus :: Int64 -> Int64 -> Int -> StreamFileStatus
+ Network.HTTP.Client.Conduit: TlsNotSupported :: HttpExceptionContent
+ Network.HTTP.Client.Conduit: TooManyRedirects :: [Response ByteString] -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: WrongRequestBodyStreamSize :: Word64 -> Word64 -> HttpExceptionContent
+ Network.HTTP.Client.Conduit: [cookie_creation_time] :: Cookie -> UTCTime
+ Network.HTTP.Client.Conduit: [cookie_domain] :: Cookie -> ByteString
+ Network.HTTP.Client.Conduit: [cookie_expiry_time] :: Cookie -> UTCTime
+ Network.HTTP.Client.Conduit: [cookie_host_only] :: Cookie -> Bool
+ Network.HTTP.Client.Conduit: [cookie_http_only] :: Cookie -> Bool
+ Network.HTTP.Client.Conduit: [cookie_last_access_time] :: Cookie -> UTCTime
+ Network.HTTP.Client.Conduit: [cookie_name] :: Cookie -> ByteString
+ Network.HTTP.Client.Conduit: [cookie_path] :: Cookie -> ByteString
+ Network.HTTP.Client.Conduit: [cookie_persistent] :: Cookie -> Bool
+ Network.HTTP.Client.Conduit: [cookie_secure_only] :: Cookie -> Bool
+ Network.HTTP.Client.Conduit: [cookie_value] :: Cookie -> ByteString
+ Network.HTTP.Client.Conduit: [fileSize] :: StreamFileStatus -> Int64
+ Network.HTTP.Client.Conduit: [proxyHost] :: Proxy -> ByteString
+ Network.HTTP.Client.Conduit: [proxyPort] :: Proxy -> Int
+ Network.HTTP.Client.Conduit: [readSoFar] :: StreamFileStatus -> Int64
+ Network.HTTP.Client.Conduit: [thisChunkSize] :: StreamFileStatus -> Int
+ Network.HTTP.Client.Conduit: applyBasicAuth :: ByteString -> ByteString -> Request -> Request
+ Network.HTTP.Client.Conduit: applyBasicProxyAuth :: ByteString -> ByteString -> Request -> Request
+ Network.HTTP.Client.Conduit: brReadSome :: BodyReader -> Int -> IO ByteString
+ Network.HTTP.Client.Conduit: class HasHttpManager a
+ Network.HTTP.Client.Conduit: computeCookieString :: Request -> CookieJar -> UTCTime -> Bool -> (ByteString, CookieJar)
+ Network.HTTP.Client.Conduit: createCookieJar :: [Cookie] -> CookieJar
+ Network.HTTP.Client.Conduit: data Cookie
+ Network.HTTP.Client.Conduit: data CookieJar
+ Network.HTTP.Client.Conduit: data HistoriedResponse body
+ Network.HTTP.Client.Conduit: data HttpException
+ Network.HTTP.Client.Conduit: data HttpExceptionContent
+ Network.HTTP.Client.Conduit: data Manager
+ Network.HTTP.Client.Conduit: data ManagerSettings
+ Network.HTTP.Client.Conduit: data Proxy
+ Network.HTTP.Client.Conduit: data ProxyOverride
+ Network.HTTP.Client.Conduit: data Request
+ Network.HTTP.Client.Conduit: data RequestBody
+ Network.HTTP.Client.Conduit: data Response body
+ Network.HTTP.Client.Conduit: data ResponseTimeout
+ Network.HTTP.Client.Conduit: data StreamFileStatus
+ Network.HTTP.Client.Conduit: defaultPath :: Request -> ByteString
+ Network.HTTP.Client.Conduit: defaultProxy :: ProxyOverride
+ Network.HTTP.Client.Conduit: defaultRequest :: Request
+ Network.HTTP.Client.Conduit: destroyCookieJar :: CookieJar -> [Cookie]
+ Network.HTTP.Client.Conduit: domainMatches :: ByteString -> ByteString -> Bool
+ Network.HTTP.Client.Conduit: evictExpiredCookies :: CookieJar -> UTCTime -> CookieJar
+ Network.HTTP.Client.Conduit: generateCookie :: SetCookie -> Request -> UTCTime -> Bool -> Maybe Cookie
+ Network.HTTP.Client.Conduit: getHttpManager :: HasHttpManager a => a -> Manager
+ Network.HTTP.Client.Conduit: getUri :: Request -> URI
+ Network.HTTP.Client.Conduit: insertCheckedCookie :: Cookie -> CookieJar -> Bool -> CookieJar
+ Network.HTTP.Client.Conduit: insertCookiesIntoRequest :: Request -> CookieJar -> UTCTime -> (Request, CookieJar)
+ Network.HTTP.Client.Conduit: isIpAddress :: ByteString -> Bool
+ Network.HTTP.Client.Conduit: makeConnection :: IO ByteString -> ByteString -> IO () -> IO () -> IO Connection
+ Network.HTTP.Client.Conduit: managerSetInsecureProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
+ Network.HTTP.Client.Conduit: managerSetProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
+ Network.HTTP.Client.Conduit: managerSetSecureProxy :: ProxyOverride -> ManagerSettings -> ManagerSettings
+ Network.HTTP.Client.Conduit: noProxy :: ProxyOverride
+ Network.HTTP.Client.Conduit: observedStreamFile :: StreamFileStatus -> IO () -> FilePath -> IO RequestBody
+ Network.HTTP.Client.Conduit: parseRequest :: MonadThrow m => String -> m Request
+ Network.HTTP.Client.Conduit: parseRequest_ :: String -> Request
+ Network.HTTP.Client.Conduit: parseUrl :: MonadThrow m => String -> m Request
+ Network.HTTP.Client.Conduit: parseUrlThrow :: MonadThrow m => String -> m Request
+ Network.HTTP.Client.Conduit: pathMatches :: ByteString -> ByteString -> Bool
+ Network.HTTP.Client.Conduit: proxyEnvironment :: Maybe Proxy -> ProxyOverride
+ Network.HTTP.Client.Conduit: proxyEnvironmentNamed :: Text -> Maybe Proxy -> ProxyOverride
+ Network.HTTP.Client.Conduit: proxyFromRequest :: ProxyOverride
+ Network.HTTP.Client.Conduit: rawConnectionModifySocket :: Socket -> IO () -> IO Maybe HostAddress -> String -> Int -> IO Connection
+ Network.HTTP.Client.Conduit: rawConnectionModifySocketSize :: Socket -> IO () -> IO Int -> Maybe HostAddress -> String -> Int -> IO Connection
+ Network.HTTP.Client.Conduit: receiveSetCookie :: SetCookie -> Request -> UTCTime -> Bool -> CookieJar -> CookieJar
+ Network.HTTP.Client.Conduit: removeExistingCookieFromCookieJar :: Cookie -> CookieJar -> (Maybe Cookie, CookieJar)
+ Network.HTTP.Client.Conduit: requestFromURI :: MonadThrow m => URI -> m Request
+ Network.HTTP.Client.Conduit: requestFromURI_ :: URI -> Request
+ Network.HTTP.Client.Conduit: responseOpenHistory :: Request -> Manager -> IO HistoriedResponse BodyReader
+ Network.HTTP.Client.Conduit: responseTimeoutDefault :: ResponseTimeout
+ Network.HTTP.Client.Conduit: responseTimeoutMicro :: Int -> ResponseTimeout
+ Network.HTTP.Client.Conduit: responseTimeoutNone :: ResponseTimeout
+ Network.HTTP.Client.Conduit: setQueryString :: [(ByteString, Maybe ByteString)] -> Request -> Request
+ Network.HTTP.Client.Conduit: setQueryStringPartialEscape :: [(ByteString, [EscapeItem])] -> Request -> Request
+ Network.HTTP.Client.Conduit: setRequestCheckStatus :: Request -> Request
+ Network.HTTP.Client.Conduit: setRequestIgnoreStatus :: Request -> Request
+ Network.HTTP.Client.Conduit: socketConnection :: Socket -> Int -> IO Connection
+ Network.HTTP.Client.Conduit: streamFile :: FilePath -> IO RequestBody
+ Network.HTTP.Client.Conduit: throwErrorStatusCodes :: MonadIO m => Request -> Response BodyReader -> m ()
+ Network.HTTP.Client.Conduit: type GivesPopper a = NeedsPopper a -> IO a
+ Network.HTTP.Client.Conduit: type NeedsPopper a = Popper -> IO a
+ Network.HTTP.Client.Conduit: type Popper = IO ByteString
+ Network.HTTP.Client.Conduit: updateCookieJar :: () => Response a -> Request -> UTCTime -> CookieJar -> (CookieJar, Response a)
+ Network.HTTP.Client.Conduit: urlEncodedBody :: [(ByteString, ByteString)] -> Request -> Request
+ Network.HTTP.Client.Conduit: useProxy :: Proxy -> ProxyOverride
+ Network.HTTP.Client.Conduit: withConnection :: () => Request -> Manager -> Connection -> IO a -> IO a
+ Network.HTTP.Client.Conduit: withManager :: () => ManagerSettings -> Manager -> IO a -> IO a
+ Network.HTTP.Client.Conduit: withResponseHistory :: () => Request -> Manager -> HistoriedResponse BodyReader -> IO a -> IO a
+ Network.HTTP.Simple: parseRequestThrow :: MonadThrow m => String -> m Request
+ Network.HTTP.Simple: parseRequestThrow_ :: String -> Request
+ Network.HTTP.Simple: setRequestCheckStatus :: Request -> Request
- Network.HTTP.Conduit: data Cookie :: *
+ Network.HTTP.Conduit: data Cookie
- Network.HTTP.Conduit: data CookieJar :: *
+ Network.HTTP.Conduit: data CookieJar
- Network.HTTP.Conduit: data HttpException :: *
+ Network.HTTP.Conduit: data HttpException
- Network.HTTP.Conduit: data HttpExceptionContent :: *
+ Network.HTTP.Conduit: data HttpExceptionContent
- Network.HTTP.Conduit: data Manager :: *
+ Network.HTTP.Conduit: data Manager
- Network.HTTP.Conduit: data ManagerSettings :: *
+ Network.HTTP.Conduit: data ManagerSettings
- Network.HTTP.Conduit: data Proxy :: *
+ Network.HTTP.Conduit: data Proxy
- Network.HTTP.Conduit: data Request :: *
+ Network.HTTP.Conduit: data Request
- Network.HTTP.Conduit: data RequestBody :: *
+ Network.HTTP.Conduit: data RequestBody
- Network.HTTP.Conduit: data Response body :: * -> *
+ Network.HTTP.Conduit: data Response body
- Network.HTTP.Conduit: data ResponseTimeout :: *
+ Network.HTTP.Conduit: data ResponseTimeout
- Network.HTTP.Conduit: managerTlsConnection :: ManagerSettings -> IO (Maybe HostAddress -> String -> Int -> IO Connection)
+ Network.HTTP.Conduit: managerTlsConnection :: ManagerSettings -> IO Maybe HostAddress -> String -> Int -> IO Connection
- Network.HTTP.Conduit: responseBody :: () => Response body -> body
+ Network.HTTP.Conduit: responseBody :: Response body -> body
- Network.HTTP.Conduit: responseCookieJar :: () => Response body -> CookieJar
+ Network.HTTP.Conduit: responseCookieJar :: Response body -> CookieJar
- Network.HTTP.Conduit: responseHeaders :: () => Response body -> ResponseHeaders
+ Network.HTTP.Conduit: responseHeaders :: Response body -> ResponseHeaders
- Network.HTTP.Conduit: responseStatus :: () => Response body -> Status
+ Network.HTTP.Conduit: responseStatus :: Response body -> Status
- Network.HTTP.Conduit: responseVersion :: () => Response body -> HttpVersion
+ Network.HTTP.Conduit: responseVersion :: Response body -> HttpVersion
- Network.HTTP.Simple: data HttpException :: *
+ Network.HTTP.Simple: data HttpException
- Network.HTTP.Simple: data Proxy :: *
+ Network.HTTP.Simple: data Proxy
- Network.HTTP.Simple: data Request :: *
+ Network.HTTP.Simple: data Request
- Network.HTTP.Simple: data Response body :: * -> *
+ Network.HTTP.Simple: data Response body

Files

ChangeLog.md view
@@ -1,3 +1,9 @@+## 2.3.2++* Adds `parseRequestThrow`, `parseRequestThrow_`, and+  `setRequestCheckStatus` to `Network.HTTP.Simple`.+  See [#304](https://github.com/snoyberg/http-client/issues/304)+ ## 2.3.1  * Reexport Query from Network.HTTP.Types
Network/HTTP/Simple.hs view
@@ -38,6 +38,8 @@     , H.defaultRequest     , H.parseRequest     , H.parseRequest_+    , parseRequestThrow+    , parseRequestThrow_       -- * Request lenses       -- ** Basics     , setRequestMethod@@ -60,6 +62,7 @@     , setRequestBodyURLEncoded       -- ** Special fields     , H.setRequestIgnoreStatus+    , H.setRequestCheckStatus     , setRequestBasicAuth     , setRequestManager     , setRequestProxy@@ -86,14 +89,14 @@ import qualified Data.Aeson.Types as A import qualified Data.Aeson as A import qualified Data.Traversable as T-import Control.Exception (throwIO, Exception)+import Control.Exception (throw, throwIO, Exception) import Data.Typeable (Typeable) import qualified Data.Conduit as C import Data.Conduit (runConduit, (.|), ConduitM) import qualified Data.Conduit.Attoparsec as C import qualified Network.HTTP.Types as H import Data.Int (Int64)-import Control.Monad.Trans.Resource (MonadResource)+import Control.Monad.Trans.Resource (MonadResource, MonadThrow) import qualified Control.Exception as E (bracket) import Data.Void (Void) @@ -236,6 +239,25 @@         (H.responseOpen req man)         H.responseClose         (run . withRes . fmap bodyReaderSource)++-- | Same as 'parseRequest', except will throw an 'HttpException' in the+-- event of a non-2XX response. This uses 'throwErrorStatusCodes' to+-- implement 'checkResponse'.+--+-- Exactly the same as 'parseUrlThrow', but has a name that is more+-- consistent with the other parseRequest functions.+--+-- @since 2.3.2+parseRequestThrow :: MonadThrow m => String -> m HC.Request+parseRequestThrow = HC.parseUrlThrow++-- | Same as 'parseRequestThrow', but parse errors cause an impure+-- exception. Mostly useful for static strings which are known to be+-- correctly formatted.+--+-- @since 2.3.2+parseRequestThrow_ :: String -> HC.Request+parseRequestThrow_ = either throw id . HC.parseUrlThrow  -- | Alternate spelling of 'httpLBS' --
http-conduit.cabal view
@@ -1,5 +1,5 @@ name:            http-conduit-version:         2.3.1+version:         2.3.2 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>
test/CookieTest.hs view
@@ -139,7 +139,7 @@   (Just default_cookie, createCookieJar []) (removeExistingCookieFromCookieJar default_cookie $ createCookieJar [default_cookie])  testRemoveNonexistantCookie :: IO ()-testRemoveNonexistantCookie = assertEqual "Removing a nonexistant cookie doesn't work"+testRemoveNonexistantCookie = assertEqual "Removing a nonexistent cookie doesn't work"   (Nothing, createCookieJar [default_cookie]) (removeExistingCookieFromCookieJar (default_cookie {cookie_name = fromString "key2"}) $ createCookieJar [default_cookie])  testRemoveCorrectCookie :: IO ()@@ -379,7 +379,7 @@   where set_cookie = default_set_cookie {setCookiePath = Just $ fromString "/a/path"}  testReceiveSetCookieNoPath :: IO ()-testReceiveSetCookieNoPath = assertEqual "Path gets set correctly when nonexistant"+testReceiveSetCookieNoPath = assertEqual "Path gets set correctly when nonexistent"   (fromString "/a/path/to") (cookie_path $ head $ destroyCookieJar $ receiveSetCookie set_cookie request default_time True $ createCookieJar [])   where set_cookie = default_set_cookie {setCookiePath = Nothing}         request = default_request {HC.path = fromString "/a/path/to/nowhere"}@@ -487,7 +487,7 @@ removeTests :: Spec removeTests = do     it "Removing a cookie works" testRemoveCookie-    it "Removing a nonexistant cookie doesn't work" testRemoveNonexistantCookie+    it "Removing a nonexistent cookie doesn't work" testRemoveNonexistantCookie     it "Removing the correct cookie" testRemoveCorrectCookie  evictionTests :: Spec@@ -528,7 +528,7 @@     it "Expiry gets set based on max age if no expiry is given" testReceiveSetCookieNoExpiry     it "Expiry gets set based on given value if no max age is given" testReceiveSetCookieNoMaxAge     it "Expiry gets set to a future date if no expiry and no max age are given" testReceiveSetCookieNoExpiryNoMaxAge-    it "Path gets set correctly when nonexistant" testReceiveSetCookieNoPath+    it "Path gets set correctly when nonexistent" testReceiveSetCookieNoPath     it "Path gets set correctly" testReceiveSetCookiePath     it "Creation time gets set correctly" testReceiveSetCookieCreationTime     it "Last access time gets set correctly" testReceiveSetCookieAccessTime