packages feed

http-conduit 1.2.2 → 1.2.3

raw patch · 5 files changed

+33/−12 lines, 5 filesdep +socksPVP ok

version bump matches the API change (PVP)

Dependencies added: socks

API changes (from Hackage documentation)

+ Network.HTTP.Conduit: socksProxy :: Request m -> Maybe SocksConf

Files

Network/HTTP/Conduit.hs view
@@ -68,6 +68,7 @@     , requestHeaders     , requestBody     , proxy+    , socksProxy     , rawBody     , decompress     , redirectCount
Network/HTTP/Conduit/ConnInfo.hs view
@@ -28,9 +28,11 @@ import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as L +import Network (PortID(..)) import Network.Socket (Socket, sClose) import Network.Socket.ByteString (recv, sendAll) import qualified Network.Socket as NS+import Network.Socks5 (socksConnectWith, SocksConf)  import Network.TLS import Network.TLS.Extra (ciphersuite_all)@@ -154,8 +156,10 @@             -- least on tls-0.8.4 it's guaranteed to always             -- return a lazy bytestring with a single chunk. -getSocket :: String -> Int -> IO NS.Socket-getSocket host' port' = do+getSocket :: String -> Int -> Maybe SocksConf -> IO NS.Socket+getSocket host' port' (Just socksConf) = do+    socksConnectWith socksConf host' (PortNumber $ fromIntegral port')+getSocket host' port' Nothing = do     let hints = NS.defaultHints {                           NS.addrFlags = [NS.AI_ADDRCONFIG]                         , NS.addrSocketType = NS.Stream
Network/HTTP/Conduit/Manager.hs view
@@ -18,7 +18,7 @@  import Prelude hiding (catch) import Data.Monoid (mappend)-import System.IO (hClose, hFlush)+import System.IO (hClose, hFlush, IOMode(..)) import qualified Data.IORef as I import qualified Data.Map as Map @@ -42,7 +42,8 @@ import Control.Concurrent (forkIO, threadDelay) import Data.Time (UTCTime, getCurrentTime, addUTCTime) -import Network (connectTo, PortID (PortNumber))+import Network (connectTo, PortID (PortNumber), HostName)+import Network.Socket (socketToHandle) import Data.Certificate.X509 (X509, encodeCertificate)  import qualified Network.HTTP.Types as W@@ -52,8 +53,10 @@ import Network.HTTP.Conduit.Util (hGetSome) import Network.HTTP.Conduit.Parser (parserHeadersFromByteString) import Network.HTTP.Conduit.Request+import Network.Socks5 (SocksConf, socksConnectWith) import Data.Default import Data.Maybe (mapMaybe)+import System.IO (Handle)  -- | Settings for a @Manager@. Please use the 'def' function and then modify -- individual settings.@@ -238,10 +241,11 @@     => Manager     -> String     -> Int+    -> Maybe SocksConf -- ^ optional socks proxy     -> ResourceT m (ConnRelease m, ConnInfo, ManagedConn)-getSocketConn man host' port' =+getSocketConn man host' port' socksProxy' =     getManagedConn man (ConnKey (T.pack host') port' False) $-        getSocket host' port'>>= socketConn desc+        getSocket host' port' socksProxy' >>= socketConn desc   where     desc = socketDesc host' port' "unsecured" @@ -253,10 +257,11 @@             -> Manager             -> String -- ^ host             -> Int -- ^ port+            -> Maybe SocksConf -- ^ optional socks proxy             -> ResourceT m (ConnRelease m, ConnInfo, ManagedConn)-getSslConn checkCert man host' port' =+getSslConn checkCert man host' port' socksProxy' =     getManagedConn man (ConnKey (T.pack host') port' True) $-        (connectTo host' (PortNumber $ fromIntegral port') >>= sslClientConn desc checkCert)+        (connectionTo host' (PortNumber $ fromIntegral port') socksProxy' >>= sslClientConn desc checkCert)   where     desc = socketDesc host' port' "secured" @@ -268,14 +273,15 @@             -> Manager             -> String -- ^ Proxy host             -> Int -- ^ Proxy port+            -> Maybe SocksConf -- ^ optional SOCKS proxy             -> ResourceT m (ConnRelease m, ConnInfo, ManagedConn)-getSslProxyConn checkCert thost tport man phost pport  =+getSslProxyConn checkCert thost tport man phost pport socksProxy' =     getManagedConn man (ConnKey (T.pack phost) pport True) $         doConnect >>= sslClientConn desc checkCert   where     desc = socketDesc phost pport "secured-proxy"     doConnect = do-        h <- connectTo phost (PortNumber $ fromIntegral pport)+        h <- connectionTo phost (PortNumber $ fromIntegral pport) socksProxy'         L.hPutStr h $ Blaze.toLazyByteString connectRequest         hFlush h         r <- hGetSome h 2048@@ -350,7 +356,7 @@         -> Manager         -> ResourceT m (ConnRelease m, ConnInfo, ManagedConn) getConn req m =-    go m connhost connport+    go m connhost connport (socksProxy req)   where     h = host req     (useProxy, connhost, connport) =@@ -401,3 +407,7 @@                 Nothing -> Map.singleton encoded expire                 Just m -> Map.insert encoded expire m +connectionTo :: HostName -> PortID -> Maybe SocksConf -> IO Handle+connectionTo host' port' Nothing = connectTo host' port'+connectionTo host' port' (Just socksConf) =+	socksConnectWith socksConf host' port' >>= flip socketToHandle ReadWriteMode
Network/HTTP/Conduit/Request.hs view
@@ -36,6 +36,7 @@ import qualified Data.ByteString.Lazy as L  import qualified Network.HTTP.Types as W+import Network.Socks5 (SocksConf)  import Control.Exception (Exception, SomeException, toException) import Control.Failure (Failure (failure))@@ -72,6 +73,8 @@     , requestBody :: RequestBody m     , proxy :: Maybe Proxy     -- ^ Optional HTTP proxy.+    , socksProxy :: Maybe SocksConf+    -- ^ Optional SOCKS proxy.     , rawBody :: Bool     -- ^ If @True@, a chunked and\/or gzipped body will not be     -- decoded. Use with caution.@@ -165,6 +168,7 @@         , requestBody = RequestBodyLBS L.empty         , method = "GET"         , proxy = Nothing+        , socksProxy = Nothing         , rawBody = False         , decompress = browserDecompress         , redirectCount = 10
http-conduit.cabal view
@@ -1,5 +1,5 @@ name:            http-conduit-version:         1.2.2+version:         1.2.3 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>@@ -43,6 +43,7 @@                  , text                  , transformers-base     >= 0.4     && < 0.5                  , lifted-base           >= 0.1     && < 0.2+                 , socks                 >= 0.4     && < 0.5                  , time     if flag(network-bytestring)         build-depends: network               >= 2.2.1   && < 2.2.3@@ -96,6 +97,7 @@                  , network                  , wai                  , warp+                 , socks                  , http-types  source-repository head