haxr 3000.11 → 3000.11.1
raw patch · 3 files changed
+27/−11 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGES +8/−0
- Network/XmlRpc/Client.hs +18/−10
- haxr.cabal +1/−1
CHANGES view
@@ -1,3 +1,11 @@+* 3000.11.1 (10 July 2015)++ - Support both HTTP and HTTPS automatically, depending on URL.+ - Bug fixes:+ - read port properly+ - set request path properly+ - set content-length header+ * 3000.11 (1 June 2015) - Switch from the HTTP package to http-streams, and add support for
Network/XmlRpc/Client.hs view
@@ -41,23 +41,24 @@ import Data.Functor ((<$>)) import Data.Maybe+import Data.Int import Network.URI import Text.Read.Compat (readMaybe) import Network.Http.Client (Method (..), Request, baselineContextSSL, buildRequest, closeConnection, getStatusCode,- getStatusMessage, http,+ getStatusMessage, http, openConnection, inputStreamBody, openConnectionSSL, receiveResponse, sendRequest, setAuthorizationBasic,- setContentType, setHeader)+ setContentType, setContentLength, setHeader) import OpenSSL import qualified System.IO.Streams as Streams import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy.Char8 as BSL (ByteString, fromChunks,- unpack)+ unpack, length) import qualified Data.ByteString.Lazy.UTF8 as U -- | Gets the return value from a method response.@@ -162,13 +163,18 @@ -- FIXME: should we really use fail? post_ :: URI -> URIAuth -> HeadersAList -> BSL.ByteString -> IO U.ByteString post_ uri auth headers content = withOpenSSL $ do- ctx <- baselineContextSSL let hostname = BS.pack (uriRegName auth)- port = fromMaybe 443 (readMaybe $ uriPort auth)+ port = fromMaybe 443 (readMaybe $ tail $ uriPort auth) - c <- openConnectionSSL ctx hostname port+ c <- case init $ uriScheme uri of+ "http" ->+ openConnection hostname port+ "https" -> do+ ctx <- baselineContextSSL+ openConnectionSSL ctx hostname port+ x -> fail ("Unknown scheme: '" ++ x ++ "'!") - req <- request uri auth headers+ req <- request uri auth headers (BSL.length content) body <- inputStreamBody <$> Streams.fromLazyByteString content _ <- sendRequest c req body@@ -193,10 +199,12 @@ Just bs -> (bs:) <$> go -- | Create an XML-RPC compliant HTTP request.-request :: URI -> URIAuth -> [(BS.ByteString, BS.ByteString)] -> IO Request-request uri auth usrHeaders = buildRequest $ do- http POST (BS.pack $ show uri)+request :: URI -> URIAuth -> [(BS.ByteString, BS.ByteString)] -> Int64 -> IO Request+request uri auth usrHeaders len = buildRequest $ do+ http POST (BS.pack $ uriPath uri) setContentType "text/xml"+ setContentLength len+ case parseUserInfo auth of (Just user, Just pass) -> setAuthorizationBasic (BS.pack user) (BS.pack pass) _ -> return ()
haxr.cabal view
@@ -1,5 +1,5 @@ Name: haxr-Version: 3000.11+Version: 3000.11.1 Cabal-version: >=1.10 Build-type: Simple Copyright: Bjorn Bringert, 2003-2006