soap-0.2.3.6: SOAP client tools

# soap-0.2.3.6: SOAP client tools

Tools to build SOAP clients using xml-conduit.

A mildly-complicated example:

    import Network.SOAP
    import Network.SOAP.Transport.HTTP

    import Text.XML.Writer
    import Text.XML.Stream.Parse as Parse
    import           Data.Text (Text)
    import qualified Data.Text as T

    main :: IO ()
    main = do
        -- Initial one-time preparations.
        transport <- initTransport "http://example.com/soap/endpoint" id (iconv "cp-1251")

        -- Making queries
        activeStaff <- listStaff transport True
        print activeStaff

    data Person = Person Text Int deriving Show

    listStaff :: Transport -> Bool -> IO [Person]
    listStaff t active = invokeWS t "urn:dummy:listStaff" () body parser
        where
            body = element "request" $ element "listStaff" $ do
                       element "active" active
                       element "order" $ T.pack "age"
                       element "limit" (10 :: Int)

            parser = StreamParser $ force "no people" $ tagNoAttr "people" $ Parse.many parsePerson

            parsePerson = tagName "person" (requireAttr "age") $ \age -> do
                              name <- Parse.content
                              return $ Person name (read . T.unpack $ age)

Notice: to invoke HTTPS services you need to initialize a transport from soap-tls or soap-openssl.

Full examples available at source repo: https://bitbucket.org/dpwiz/haskell-soap/src/HEAD/soap/examples/

Modules

soap-0.2.3.6

- Network
  Submodules
  - Network.SOAP
    Submodules
    - Network.SOAP.Exception
    - Parsing
      Submodules
      - Network.SOAP.Parsing.Cursor
      - Network.SOAP.Parsing.Stream
    - Network.SOAP.Transport
      Submodules
      - Network.SOAP.Transport.HTTP
      - Network.SOAP.Transport.Mock