-
Notifications
You must be signed in to change notification settings - Fork 75
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve readme and documentation (#64)
* Update readme * Improve readme and documentation * Addlinksto pull requests and issues * Improve contributing block * Fix repo url * Add configuration block
- Loading branch information
Showing
6 changed files
with
90 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,113 @@ | ||
# Soap | ||
[![Build Status](https://travis-ci.org/potok-digital/soap.svg?branch=master)](https://travis-ci.org/potok-digital/soap) | ||
[![Code coverage](https://img.shields.io/coveralls/github/potok-digital/soap.svg?style=flat)](https://coveralls.io/github/potok-digital/soap) | ||
[![Build Status](https://travis-ci.org/elixir-soap/soap.svg?branch=master)](https://travis-ci.org/elixir-soap/soap) | ||
[![Code coverage](https://img.shields.io/coveralls/github/elixir-soap/soap.svg?style=flat)](https://coveralls.io/github/elixir-soap/soap) | ||
[![Hex version](https://img.shields.io/hexpm/v/soap.svg?style=flat)](https://hex.pm/packages/soap) | ||
[![Hex license](https://img.shields.io/hexpm/l/soap.svg?style=flat)](https://hex.pm/packages/soap) | ||
[![Hex downloads](https://img.shields.io/hexpm/dt/soap.svg?style=flat)](https://hex.pm/packages/soap) | ||
|
||
Pure Elixir implementation of SOAP client | ||
|
||
## NOTE: Library is NOT production ready before 1.0 version | ||
SOAP client for Elixir programming language | ||
|
||
## Installation | ||
|
||
1) Add `soap` to your deps: | ||
|
||
```elixir | ||
def deps do | ||
[{:soap, "~> 0.2.1"}] | ||
[{:soap, "~> 0.2"}] | ||
end | ||
``` | ||
2) Add `soap` to the list of application dependencies | ||
2) Add `soap` to the list of application dependencies(or just use extra_applications): | ||
|
||
```elixir | ||
def application do | ||
[applications: [:logger, :soap]] | ||
end | ||
``` | ||
|
||
## Configuration | ||
|
||
Configure version of SOAP protocol. Supported versions `1.1`(default) and `1.2`. | ||
```elixir | ||
config :soap, :globals, version: "1.1" | ||
``` | ||
|
||
## Usage | ||
|
||
The documentation is available on [HexDocs](https://hexdocs.pm/soap/api-reference.html). | ||
|
||
Parse WSDL file for execution of actions on its basis: | ||
```elixir | ||
iex(1)> {:ok, wsdl} = Soap.init_model(wsdl_path, :url) | ||
{:ok, parsed_wsdl} | ||
``` | ||
|
||
Get list of available operations: | ||
```elixir | ||
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: | ||
```elixir | ||
wsdl_path = "http://www.dneonline.com/calculator.asmx?WSDL" | ||
action = "Add" | ||
params = %{intA: 1, intB: 2} | ||
|
||
# Parse wsdl file for execution of action on its basis | ||
{:ok, wsdl} = Soap.init_model(wsdl_path, :url) | ||
|
||
# Call action | ||
{:ok, %Soap.Response{body: body, headers: headers, request_url: url, status_code: code}} = Soap.call(wsdl, action, params) | ||
|
||
# Parse body | ||
Soap.Response.parse(body, code) | ||
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 | ||
}} | ||
``` | ||
|
||
To add SOAP headers, pass in a `{headers, params}` tuple instead of just params. | ||
Parse response: | ||
```elixir | ||
iex(4)> Soap.Response.parse(response) | ||
%{AddResponse: %{AddResult: "3"}} | ||
``` | ||
|
||
To add SOAP headers, pass in a `{headers, params}` tuple instead of just params: | ||
```elixir | ||
%Soap.Response{} = Soap.call(wsdl, action, {%{Token: "foo"}, params}) | ||
{:ok, %Soap.Response{}} = Soap.call(wsdl, action, {%{Token: "foo"}, params}) | ||
``` | ||
|
||
## Contributing | ||
We appreciate any contribution and open to [future requests](https://github.com/elixir-soap/soap/pulls). | ||
|
||
You can find a list of features and bugs in the [issue tracker](https://github.com/elixir-soap/soap/issues). | ||
|
||
## License | ||
|
||
Soap is released under the MIT license, see the [LICENSE](https://github.com/elixir-soap/soap/blob/master/LICENSE) file. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
{"shell":true,"revision":"bf8273459d80eb756dc5f024535dea3fa3331f0f","objects":[{"type":null,"source":"lib/soap.ex:2","object_type":"ModuleObject","moduledoc":"Documentation for Soap.\n","module":"Elixir.Soap","id":"Soap"},{"type":"def","source":"lib/soap.ex:6","signature":[],"object_type":"FunctionObject","name":"hello","module_id":"Soap","id":"hello/0","doc":"Hello world.\n\n## Examples\n\n iex> Soap.hello\n :world\n\n","arity":0}],"language":"elixir","git_repo_url":"https://github.com/potok-digital/soap.git","client_version":"0.5.6","client_name":"inch_ex","branch_name":"master","args":[]} | ||
{"shell":true,"revision":"bf8273459d80eb756dc5f024535dea3fa3331f0f","objects":[{"type":null,"source":"lib/soap.ex:2","object_type":"ModuleObject","moduledoc":"Documentation for Soap.\n","module":"Elixir.Soap","id":"Soap"},{"type":"def","source":"lib/soap.ex:6","signature":[],"object_type":"FunctionObject","name":"hello","module_id":"Soap","id":"hello/0","doc":"Hello world.\n\n## Examples\n\n iex> Soap.hello\n :world\n\n","arity":0}],"language":"elixir","git_repo_url":"https://github.com/elixir-soap/soap.git","client_version":"0.5.6","client_name":"inch_ex","branch_name":"master","args":[]} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters