soap 0.2.0.3 → 0.2.0.4
raw patch · 2 files changed
+39/−3 lines, 2 filesdep +configurator
Dependencies added: configurator
Files
- soap.cabal +2/−2
- src/Network/SOAP/Transport/HTTP/Conduit.hs +37/−1
soap.cabal view
@@ -1,5 +1,5 @@ name: soap-version: 0.2.0.3+version: 0.2.0.4 synopsis: SOAP client tools description: Tools to build SOAP clients using xml-conduit.@@ -63,7 +63,7 @@ Network.SOAP.Parsing.Stream build-depends: base ==4.*,- http-conduit >=1.9.0, resourcet, tls-extra, http-types,+ http-conduit >=1.9.0, resourcet, tls-extra, http-types, configurator, xml-conduit-writer, xml-conduit, xml-types, conduit, data-default, text, bytestring, iconv, unordered-containers, mtl
src/Network/SOAP/Transport/HTTP/Conduit.hs view
@@ -6,7 +6,7 @@ module Network.SOAP.Transport.HTTP.Conduit ( -- * Initialization- initTransport, initTransport_+ initTransport, initTransport_, confTransport , EndpointURL -- * Making a request , RequestP, clientCert, traceRequest@@ -20,14 +20,19 @@ import Network.HTTP.Conduit import Network.HTTP.Types(Status(..)) import Control.Monad.Trans.Resource++import Data.Configurator (require, lookupDefault)+import Data.Configurator.Types (Config) import Codec.Text.IConv (EncodingName, convertFuzzy, Fuzzy(Transliterate)) import qualified Network.TLS.Extra as TLS +import Data.Text (Text) import qualified Data.ByteString.Char8 as BS import Data.ByteString.Lazy.Char8 (ByteString, unpack, fromChunks) import Debug.Trace (trace) import Control.Exception as E+import Data.Monoid ((<>)) import Network.SOAP.Transport import Network.SOAP.Exception@@ -55,6 +60,37 @@ -- | Create a transport without any request and body processing. initTransport_ :: EndpointURL -> IO Transport initTransport_ url = initTransport url id id++-- | Load common transport parameters from a configurator file.+--+-- > soap {+-- > url = "https://vendor.tld/service/"+-- > client_cert = "etc/client.pem"+-- > client_key = "etc/client.key"+-- > trace = true+-- > }+--+-- Only url field is required.+--+-- > import Data.Configurator (load, Worth(Required))+-- > main = do+-- > transport <- confTransport "soap" =<< load [Required "etc/example.conf"]+confTransport :: Text -> Config -> IO Transport+confTransport section conf = do+ url <- require conf (section <> ".url")++ cCert <- lookupDefault "" conf (section <> ".client_cert")+ cKey <- lookupDefault "" conf (section <> ".client_key")+ cc <- if null cCert+ then return id+ else clientCert cCert cKey++ tracer <- lookupDefault False conf (section <> ".trace")+ let (tr, tb) = if tracer+ then (traceRequest, traceBody)+ else (id, id)++ initTransport url (tr . cc) tb -- | Render document, submit it as a POST request and retrieve a body. runQuery :: Manager