Skip to content
This repository has been archived by the owner on Oct 12, 2023. It is now read-only.
/ soap Public archive
forked from elixir-soap/soap

SOAP client for Elixir programming language

License

Notifications You must be signed in to change notification settings

TheRealReal/soap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Soap

This repository has been archived.

📚 Archived Status: This repository is no longer actively maintained or updated. It is being preserved for historical reference or potential future use. Issues, pull requests, and contributions are no longer accepted.

Build Status Code coverage Hex version Hex license Hex downloads

SOAP client for Elixir programming language

Installation

  1. Add soap to your deps:
def deps do
  [{:soap, "~> 1.0"}]
end
  1. Add soap to the list of application dependencies(or just use extra_applications):
def application do
  [applications: [:logger, :soap]]
end

Configuration

Configure version of SOAP protocol. Supported versions 1.1(default) and 1.2.

config :soap, :globals, version: "1.1"

Usage

The documentation is available on HexDocs.

Parse WSDL file for execution of actions on its basis:

iex(1)> {:ok, wsdl} = Soap.init_model(wsdl_path, :url)
{:ok, parsed_wsdl}

Get list of available operations:

iex(2)> Soap.operations(wsdl)
[
  %{
    input: %{body: nil, header: nil},
    name: "Add",
    soap_action: "http://tempuri.org/Add"
  },
  %{
    input: %{body: nil, header: nil},
    name: "Subtract",
    soap_action: "http://tempuri.org/Subtract"
  },
  %{
    input: %{body: nil, header: nil},
    name: "Multiply",
    soap_action: "http://tempuri.org/Multiply"
  },
  %{
    input: %{body: nil, header: nil},
    name: "Divide",
    soap_action: "http://tempuri.org/Divide"
  }
]

Call action:

wsdl_path = "http://www.dneonline.com/calculator.asmx?WSDL"
action = "Add"
params = %{intA: 1, intB: 2}

iex(3)> {:ok, response} = Soap.call(wsdl, action, params)
{:ok,
 %Soap.Response{
   body: "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><AddResponse xmlns=\"http://tempuri.org/\"><AddResult>3</AddResult></AddResponse></soap:Body></soap:Envelope>",
   headers: [
     {"Cache-Control", "private, max-age=0"},
     {"Content-Length", "325"},
     {"Content-Type", "text/xml; charset=utf-8"},
     {"Server", "Microsoft-IIS/7.5"},
     {"X-AspNet-Version", "2.0.50727"},
     {"X-Powered-By", "ASP.NET"},
     {"Date", "Thu, 14 Feb 2019 07:52:04 GMT"}
   ],
   request_url: "http://www.dneonline.com/calculator.asmx",
   status_code: 200
 }}

Parse response:

iex(4)> Soap.Response.parse(response)
%{AddResponse: %{AddResult: "3"}}

To add SOAP headers, pass in a {headers, params} tuple instead of just params:

{:ok, %Soap.Response{}} = Soap.call(wsdl, action, {%{Token: "foo"}, params})

Contributing

We appreciate any contribution and open to future requests.

You can find a list of features and bugs in the issue tracker.

License

Soap is released under the MIT license, see the LICENSE file.

About

SOAP client for Elixir programming language

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 100.0%