# EasySoap

**easysoap** is a WSDL SoapClient for Node.js.

##### Support

##### [Buy me a Coffee](https://www.patreon.com/moszeed)



## How to get ?
install with npm

```shell
npm i easysoap
```

## Usage

### get a soapclient instance

    const EasySoap = require('easysoap');
    const soapClient = EasySoap(params, opts);

**params** createParams, soapOptions  
**response** instance of easysoap

##### possible parameter data
*createParams*

    {
        host               : 'www.example.com',
        path               : '/soap/path',
        wsdl               : '/wsdl/path',
        headers            : Array or Object,
        rejectUnauthorized : true/false
    }

*soapOptions*

    {
        secure : true/false //is https or http
    }

###### the following methods available after creating an soapclient instance with *easysoap*

#### *call*
**params** callParams  
**response** callResponseObject   

#### *getRequestXml*
**params** callParams  
**response** xml (string)  

*callParams*

	{
	    method    : "sampleMethodName",
	    attributes: Object of custom tag attributes for given params,
	    params	: Object/Array of params
	}


#### *getXmlDataAsJson*
**params** xml (string)  
**response** xmldata as json

#### *getAllFunctions*
**response** Function Names (array)

#### *getMethodParamsByName*
**params** methodName (string)  
**response** methodParams (object)

## Examples

	(() => {
	    'use strict';
	    const EasySoap = require('easysoap');
	
	    // define soap params
	    const params = {
		   host: 'www.sample.com',
		   path: '/path/soap/',
		   wsdl: '/path/wsdl/',
	
		   // set soap headers (optional)
		   headers: [{
		       'name'      : 'item_name',
	            'value'    : 'item_value',
	            'namespace': 'item_namespace'
	       }]
	    }
	
	    /*
	     * create the client
	     */
	    var soapClient = EasySoap(params);


    /*
     * get all available functions
     */
    soapClient.getAllFunctions()
       .then((functionArray) => { console.log(functionArray); })
       .catch((err) => { throw new Error(err); });


	/*
	 * get the method params by given methodName
	 */
	soapClient.getMethodParamsByName('methodName')
	   .then((methodParams) => {
	      console.log(methodParams.request);
	      console.log(methodParams.response);
	    })
	    .catch((err) => { throw new Error(err); });


	/*
	 * call soap method
	 */
	soapClient.call({
	   method    : 'methodName',
	   attributes: {
	      xmlns: 'http://www.sample.com'
	   },
	   params: {
	      testParam: 1,
	      testParam: [2, 3],
	      testParam: {
	         '_value'     : 4,
	         '_attributes': {
	             'xmlns1': 'http://www.sample.com/other'
	         }
	      }
	   }
	})
	.then((callResponse) => {
	    console.log(callResponse.data);	// response data as json
	    console.log(callResponse.body);	// response body
	    console.log(callResponse.header);  //response header
	})
	.catch((err) => { throw new Error(err); });
