packages feed

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 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