wasabi 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ .DS_Store
2
+ doc
3
+ coverage
4
+ pkg
5
+ *~
6
+ *.gem
7
+ .bundle
8
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - ruby-head
5
+ - ree
6
+ - rbx
7
+ - rbx-2.0
8
+ - jruby
@@ -0,0 +1,4 @@
1
+ ## 1.0.0 (2011-07-03)
2
+
3
+ * Initial version extracted from the [Savon](http://rubygems.org/gems/savon) library.
4
+ Use it to build your own SOAP client and help to improve it!
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Daniel Harrington
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,58 @@
1
+ Wasabi [![Build Status](http://travis-ci.org/rubiii/wasabi.png)](http://travis-ci.org/rubiii/wasabi)
2
+ =====
3
+
4
+ A simple WSDL parser.
5
+
6
+
7
+ Installation
8
+ ------------
9
+
10
+ Wasabi is available through [Rubygems](http://rubygems.org/gems/wasabi) and can be installed via:
11
+
12
+ ```
13
+ $ gem install wasabi
14
+ ```
15
+
16
+
17
+ Getting started
18
+ ---------------
19
+
20
+ ``` ruby
21
+ document = Wasabi.document File.read("some.wsdl")
22
+ ```
23
+
24
+ Get the SOAP endpoint:
25
+
26
+ ``` ruby
27
+ document.endpoint
28
+ # => "http://soap.example.com"
29
+ ```
30
+
31
+ Get the target namespace:
32
+
33
+ ``` ruby
34
+ document.namespace
35
+ # => "http://v1.example.com"
36
+ ```
37
+
38
+ Check whether elementFormDefault is set to `:qualified` or `:unqualified`:
39
+
40
+ ``` ruby
41
+ document.element_form_default
42
+ # => :qualified
43
+ ```
44
+
45
+ Get a list of available SOAP actions (snakecase for convenience):
46
+
47
+ ``` ruby
48
+ document.soap_actions
49
+ # => [:create_user, :find_user]
50
+ ```
51
+
52
+ Get a map of SOAP action Symbols, their input tag and original SOAP action name:
53
+
54
+ ``` ruby
55
+ document.operations
56
+ # => { :create_user => { :input => "createUser", :action => "createUser" },
57
+ # => :find_user => { :input => "findUser", :action => "findUser" } }
58
+ ```
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new do |t|
7
+ t.rspec_opts = %w(-c)
8
+ end
9
+
10
+ task :default => :spec
11
+ task :test => :spec
@@ -0,0 +1,11 @@
1
+ require "wasabi/version"
2
+ require "wasabi/document"
3
+
4
+ module Wasabi
5
+
6
+ # Expects a WSDL document and returns a <tt>Wasabi::Document</tt>.
7
+ def self.document(document)
8
+ Document.new(document)
9
+ end
10
+
11
+ end
@@ -0,0 +1,21 @@
1
+ module Wasabi
2
+ module CoreExt
3
+ module String
4
+
5
+ # Returns the String in snakecase.
6
+ def snakecase
7
+ str = dup
8
+ str.gsub! /::/, '/'
9
+ str.gsub! /([A-Z]+)([A-Z][a-z])/, '\1_\2'
10
+ str.gsub! /([a-z\d])([A-Z])/, '\1_\2'
11
+ str.tr! ".", "_"
12
+ str.tr! "-", "_"
13
+ str.downcase!
14
+ str
15
+ end unless method_defined?(:snakecase)
16
+
17
+ end
18
+ end
19
+ end
20
+
21
+ String.send :include, Wasabi::CoreExt::String
@@ -0,0 +1,91 @@
1
+ require "nokogiri"
2
+ require "wasabi/parser"
3
+
4
+ module Wasabi
5
+
6
+ # = Wasabi::Document
7
+ #
8
+ # Represents a WSDL document.
9
+ class Document
10
+
11
+ # Accepts a WSDL +document+ to parse.
12
+ def initialize(document = nil)
13
+ self.document = document
14
+ end
15
+
16
+ attr_accessor :document
17
+
18
+ # Returns whether a +document+ was set.
19
+ def document?
20
+ !!document
21
+ end
22
+
23
+ # Returns the SOAP endpoint.
24
+ def endpoint
25
+ @endpoint ||= parser.endpoint
26
+ end
27
+
28
+ # Sets the SOAP endpoint.
29
+ attr_writer :endpoint
30
+
31
+ # Returns the target namespace.
32
+ def namespace
33
+ @namespace ||= parser.namespace
34
+ end
35
+
36
+ # Sets the target namespace.
37
+ attr_writer :namespace
38
+
39
+ # Returns the value of elementFormDefault.
40
+ def element_form_default
41
+ @element_form_default ||= parser.element_form_default
42
+ end
43
+
44
+ # Returns a list of available SOAP actions.
45
+ def soap_actions
46
+ @soap_actions ||= parser.operations.keys
47
+ end
48
+
49
+ # Returns the SOAP action for a given +key+.
50
+ def soap_action(key)
51
+ operations[key][:action] if operations[key]
52
+ end
53
+
54
+ # Returns the SOAP input for a given +key+.
55
+ def soap_input(key)
56
+ operations[key][:input] if operations[key]
57
+ end
58
+
59
+ # Returns a map of SOAP operations.
60
+ def operations
61
+ @operations ||= parser.operations
62
+ end
63
+
64
+ # Returns the raw WSDL document.
65
+ # Can be used as a hook to extend the library.
66
+ def xml
67
+ @xml ||= document
68
+ end
69
+
70
+ private
71
+
72
+ # Parses the WSDL document and returns the <tt>Wasabi::Parser</tt>.
73
+ def parser
74
+ @parser ||= guard_parse && parse
75
+ end
76
+
77
+ # Raises an error if the WSDL document is missing.
78
+ def guard_parse
79
+ return true if xml.kind_of?(String)
80
+ raise ArgumentError, "Wasabi needs a WSDL document"
81
+ end
82
+
83
+ # Parses the WSDL document and returns <tt>Wasabi::Parser</tt>.
84
+ def parse
85
+ parser = Parser.new Nokogiri::XML(xml)
86
+ parser.parse
87
+ parser
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,94 @@
1
+ require "uri"
2
+ require "wasabi/core_ext/string"
3
+
4
+ module Wasabi
5
+
6
+ # = Wasabi::Parser
7
+ #
8
+ # Parses WSDL documents and remembers their important parts.
9
+ class Parser
10
+
11
+ def initialize(document)
12
+ @document = document
13
+ @path = []
14
+ @operations = {}
15
+ @namespaces = {}
16
+ @element_form_default = :unqualified
17
+ end
18
+
19
+ # Returns the SOAP endpoint.
20
+ attr_reader :endpoint
21
+
22
+ # Returns the target namespace.
23
+ attr_reader :namespace
24
+
25
+ # Returns the SOAP operations.
26
+ attr_reader :operations
27
+
28
+ # Returns the value of elementFormDefault.
29
+ attr_reader :element_form_default
30
+
31
+ def parse
32
+ parse_namespaces
33
+ parse_endpoint
34
+ parse_operations
35
+ end
36
+
37
+ def parse_namespaces
38
+ element_form_default = @document.at_xpath(
39
+ "s0:definitions/s0:types/xs:schema/@elementFormDefault",
40
+ "s0" => "http://schemas.xmlsoap.org/wsdl/",
41
+ "xs" => "http://www.w3.org/2001/XMLSchema")
42
+ @element_form_default = element_form_default.to_s.to_sym if element_form_default
43
+
44
+ namespace = @document.at_xpath(
45
+ "s0:definitions/@targetNamespace",
46
+ "s0" => "http://schemas.xmlsoap.org/wsdl/")
47
+ @namespace = namespace.to_s if namespace
48
+ end
49
+
50
+ def parse_endpoint
51
+ endpoint = @document.at_xpath(
52
+ "s0:definitions/s0:service//soap11:address/@location",
53
+ "s0" => "http://schemas.xmlsoap.org/wsdl/",
54
+ "soap11" => "http://schemas.xmlsoap.org/wsdl/soap/")
55
+ endpoint ||= @document.at_xpath(
56
+ "s0:definitions/s0:service//soap12:address/@location",
57
+ "s0" => "http://schemas.xmlsoap.org/wsdl/",
58
+ "soap12" => "http://schemas.xmlsoap.org/wsdl/soap12/")
59
+
60
+ @endpoint = URI(URI.escape(endpoint.to_s)) if endpoint
61
+ end
62
+
63
+ def parse_operations
64
+ operations = @document.xpath(
65
+ "s0:definitions/s0:binding/s0:operation",
66
+ "s0" => "http://schemas.xmlsoap.org/wsdl/")
67
+
68
+ operations.each do |operation|
69
+ name = operation.attribute("name").to_s
70
+
71
+ soap_action = operation.at_xpath(".//soap11:operation/@soapAction",
72
+ "soap11" => "http://schemas.xmlsoap.org/wsdl/soap/"
73
+ )
74
+ soap_action ||= operation.at_xpath(".//soap12:operation/@soapAction",
75
+ "soap12" => "http://schemas.xmlsoap.org/wsdl/soap12/"
76
+ )
77
+
78
+ if soap_action
79
+ soap_action = soap_action.to_s
80
+
81
+ action = soap_action && !soap_action.empty? ? soap_action : name
82
+ input = (!name || name.empty?) ? action.split("/").last : name
83
+
84
+ @operations[input.snakecase.to_sym] =
85
+ { :action => action, :input => input }
86
+ elsif !@operations[name.snakecase.to_sym]
87
+ @operations[name.snakecase.to_sym] =
88
+ { :action => name, :input => name }
89
+ end
90
+ end
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,5 @@
1
+ module Wasabi
2
+
3
+ VERSION = "1.0.0"
4
+
5
+ end
@@ -0,0 +1,63 @@
1
+ <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="AuthenticationWebServiceImplService" targetNamespace="http://v1_0.ws.auth.order.example.com/" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://v1_0.ws.auth.order.example.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
2
+ <wsdl:types>
3
+ <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://v1_0.ws.auth.order.example.com/" xmlns:tns="http://v1_0.ws.auth.order.example.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+ <xs:element name="authenticate" type="tns:authenticate" />
5
+ <xs:element name="authenticateResponse" type="tns:authenticateResponse" />
6
+ <xs:element name="authenticationResult" type="tns:authenticationResult" />
7
+ <xs:element name="authenticationValue" type="tns:authenticationValue" />
8
+ <xs:complexType name="authenticate">
9
+ <xs:sequence>
10
+ <xs:element minOccurs="0" name="user" type="xs:string" />
11
+ <xs:element minOccurs="0" name="password" type="xs:string" />
12
+ </xs:sequence>
13
+ </xs:complexType>
14
+ <xs:complexType name="authenticateResponse">
15
+ <xs:sequence>
16
+ <xs:element minOccurs="0" name="return" type="tns:authenticationResult" />
17
+ </xs:sequence>
18
+ </xs:complexType>
19
+ <xs:complexType name="authenticationResult">
20
+ <xs:sequence>
21
+ <xs:element minOccurs="0" name="authenticationValue" nillable="true" type="tns:authenticationValue" />
22
+ <xs:element name="success" type="xs:boolean" />
23
+ </xs:sequence>
24
+ </xs:complexType>
25
+ <xs:complexType name="authenticationValue">
26
+ <xs:sequence>
27
+ <xs:element name="token" type="xs:string" />
28
+ <xs:element name="tokenHash" type="xs:string" />
29
+ <xs:element name="client" type="xs:string" />
30
+ </xs:sequence>
31
+ </xs:complexType>
32
+ </xs:schema>
33
+ </wsdl:types>
34
+ <wsdl:message name="authenticate">
35
+ <wsdl:part element="tns:authenticate" name="parameters" />
36
+ </wsdl:message>
37
+ <wsdl:message name="authenticateResponse">
38
+ <wsdl:part element="tns:authenticateResponse" name="parameters" />
39
+ </wsdl:message>
40
+ <wsdl:portType name="AuthenticationWebService">
41
+ <wsdl:operation name="authenticate">
42
+ <wsdl:input message="tns:authenticate" name="authenticate" />
43
+ <wsdl:output message="tns:authenticateResponse" name="authenticateResponse" />
44
+ </wsdl:operation>
45
+ </wsdl:portType>
46
+ <wsdl:binding name="AuthenticationWebServiceImplServiceSoapBinding" type="tns:AuthenticationWebService">
47
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
48
+ <wsdl:operation name="authenticate">
49
+ <soap:operation soapAction="" style="document" />
50
+ <wsdl:input name="authenticate">
51
+ <soap:body use="literal" />
52
+ </wsdl:input>
53
+ <wsdl:output name="authenticateResponse">
54
+ <soap:body use="literal" />
55
+ </wsdl:output>
56
+ </wsdl:operation>
57
+ </wsdl:binding>
58
+ <wsdl:service name="AuthenticationWebServiceImplService">
59
+ <wsdl:port binding="tns:AuthenticationWebServiceImplServiceSoapBinding" name="AuthenticationWebServiceImplPort">
60
+ <soap:address location="http://example.com/validation/1.0/AuthenticationService" />
61
+ </wsdl:port>
62
+ </wsdl:service>
63
+ </wsdl:definitions>
@@ -0,0 +1,156 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <s0:definitions name="queryDefinitions" targetNamespace="http://api.geotrust.com/webtrust/query" xmlns="" xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://api.geotrust.com/webtrust/query" xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s3="http://www.openuri.org/2006/12/wsdl/upgradedJWS">
3
+ <s0:types>
4
+ <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://api.geotrust.com/webtrust/query" xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://api.geotrust.com/webtrust/query" xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s3="http://www.openuri.org/2006/12/wsdl/upgradedJWS" xmlns:xs="http://www.w3.org/2001/XMLSchema">
5
+ <xs:complexType name="GetQuickApproverListInput">
6
+ <xs:sequence>
7
+ <xs:element minOccurs="0" name="QueryRequestHeader" type="quer:queryRequestHeader" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
8
+ <xs:element minOccurs="0" name="Domain" type="xs:string"/>
9
+ <xs:element minOccurs="0" name="IncludeUserAgreement" type="quer:includeUserAgreement" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
10
+ </xs:sequence>
11
+ </xs:complexType>
12
+ <xs:complexType name="queryRequestHeader">
13
+ <xs:sequence>
14
+ <xs:element minOccurs="0" name="PartnerCode" type="xs:string"/>
15
+ <xs:element minOccurs="0" name="AuthToken" type="quer:authToken" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
16
+ <xs:element minOccurs="0" name="ReplayToken" type="xs:string"/>
17
+ <xs:element minOccurs="0" name="UseReplayToken" type="xs:boolean"/>
18
+ </xs:sequence>
19
+ </xs:complexType>
20
+ <xs:complexType name="authToken">
21
+ <xs:sequence>
22
+ <xs:element minOccurs="0" name="UserName" type="xs:string"/>
23
+ <xs:element minOccurs="0" name="Password" type="xs:string"/>
24
+ </xs:sequence>
25
+ </xs:complexType>
26
+ <xs:complexType name="includeUserAgreement">
27
+ <xs:sequence>
28
+ <xs:element minOccurs="0" name="UserAgreementProductCode" type="xs:string"/>
29
+ </xs:sequence>
30
+ </xs:complexType>
31
+ <xs:complexType name="GetUserAgreementInput">
32
+ <xs:sequence>
33
+ <xs:element minOccurs="0" name="QueryRequestHeader" type="quer:queryRequestHeader" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
34
+ <xs:element minOccurs="0" name="UserAgreementProductCode" type="xs:string"/>
35
+ </xs:sequence>
36
+ </xs:complexType>
37
+ <xs:complexType name="GetQuickApproverListOutput">
38
+ <xs:sequence>
39
+ <xs:element minOccurs="0" name="QueryResponseHeader" type="quer:queryResponseHeader" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
40
+ <xs:element minOccurs="0" name="ApproverList" type="quer:ArrayOfApprover" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
41
+ <xs:element minOccurs="0" name="UserAgreement" type="xs:string"/>
42
+ </xs:sequence>
43
+ </xs:complexType>
44
+ <xs:complexType name="queryResponseHeader">
45
+ <xs:sequence>
46
+ <xs:element name="SuccessCode" type="xs:int"/>
47
+ <xs:element minOccurs="0" name="Errors" type="quer:ArrayOfError" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
48
+ <xs:element minOccurs="0" name="Timestamp" type="xs:dateTime"/>
49
+ <xs:element name="ReturnCount" type="xs:int"/>
50
+ </xs:sequence>
51
+ </xs:complexType>
52
+ <xs:complexType name="Error">
53
+ <xs:sequence>
54
+ <xs:element name="ErrorCode" type="xs:int"/>
55
+ <xs:element minOccurs="0" name="ErrorField" type="xs:string"/>
56
+ <xs:element minOccurs="0" name="ErrorMessage" type="xs:string"/>
57
+ </xs:sequence>
58
+ </xs:complexType>
59
+ <xs:complexType name="ArrayOfError">
60
+ <xs:sequence>
61
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Error" type="quer:Error" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
62
+ </xs:sequence>
63
+ </xs:complexType>
64
+ <xs:element name="ArrayOfError" type="quer:ArrayOfError" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
65
+ <xs:complexType name="Approver">
66
+ <xs:sequence>
67
+ <xs:element minOccurs="0" name="ApproverType" type="xs:string"/>
68
+ <xs:element minOccurs="0" name="ApproverEmail" type="xs:string"/>
69
+ </xs:sequence>
70
+ </xs:complexType>
71
+ <xs:complexType name="ArrayOfApprover">
72
+ <xs:sequence>
73
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="Approver" type="quer:Approver" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
74
+ </xs:sequence>
75
+ </xs:complexType>
76
+ <xs:element name="ArrayOfApprover" type="quer:ArrayOfApprover" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
77
+ <xs:complexType name="ArrayOfString">
78
+ <xs:sequence>
79
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="String" type="xs:string"/>
80
+ </xs:sequence>
81
+ </xs:complexType>
82
+ <xs:element name="ArrayOfString" type="quer:ArrayOfString" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
83
+ <xs:element name="GetQuickApproverList">
84
+ <xs:complexType>
85
+ <xs:sequence>
86
+ <xs:element minOccurs="0" name="Request" type="quer:GetQuickApproverListInput" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
87
+ </xs:sequence>
88
+ </xs:complexType>
89
+ </xs:element>
90
+ <xs:element name="GetQuickApproverListResponse">
91
+ <xs:complexType>
92
+ <xs:sequence>
93
+ <xs:element minOccurs="0" name="GetQuickApproverListResult" type="quer:GetQuickApproverListOutput" xmlns:quer="http://api.geotrust.com/webtrust/query"/>
94
+ </xs:sequence>
95
+ </xs:complexType>
96
+ </xs:element>
97
+ <xs:element name="hello">
98
+ <xs:complexType>
99
+ <xs:sequence>
100
+ <xs:element minOccurs="0" name="Input" type="xs:string"/>
101
+ </xs:sequence>
102
+ </xs:complexType>
103
+ </xs:element>
104
+ <xs:element name="helloResponse">
105
+ <xs:complexType>
106
+ <xs:sequence>
107
+ <xs:element minOccurs="0" name="helloResult" type="xs:string"/>
108
+ </xs:sequence>
109
+ </xs:complexType>
110
+ </xs:element>
111
+ </xs:schema>
112
+ </s0:types>
113
+ <s0:message name="hello">
114
+ <s0:part element="s1:hello" name="parameters"/>
115
+ </s0:message>
116
+ <s0:message name="helloResponse">
117
+ <s0:part element="s1:helloResponse" name="helloResultPart"/>
118
+ </s0:message>
119
+ <s0:portType name="querySoap">
120
+ <s0:operation name="GetQuickApproverList" parameterOrder="parameters">
121
+ <s0:input message="s1:GetQuickApproverList"/>
122
+ <s0:output message="s1:GetQuickApproverListResponse"/>
123
+ </s0:operation>
124
+ <s0:operation name="hello" parameterOrder="parameters">
125
+ <s0:input message="s1:hello"/>
126
+ <s0:output message="s1:helloResponse"/>
127
+ </s0:operation>
128
+ </s0:portType>
129
+ <s0:binding name="querySoapBinding" type="s1:querySoap">
130
+ <s2:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
131
+ <s0:operation name="GetQuickApproverList">
132
+ <s2:operation style="document"/>
133
+ <s0:input>
134
+ <s2:body parts="parameters" use="literal"/>
135
+ </s0:input>
136
+ <s0:output>
137
+ <s2:body parts="GetQuickApproverListResultPart" use="literal"/>
138
+ </s0:output>
139
+ </s0:operation>
140
+ <s0:operation name="hello">
141
+ <s2:operation style="document"/>
142
+ <s0:input>
143
+ <s2:body parts="parameters" use="literal"/>
144
+ </s0:input>
145
+ <s0:output>
146
+ <s2:body parts="helloResultPart" use="literal"/>
147
+ </s0:output>
148
+ </s0:operation>
149
+ </s0:binding>
150
+ <s0:service name="query">
151
+ <s3:upgraded81/>
152
+ <s0:port binding="s1:querySoapBinding" name="querySoap">
153
+ <s2:address location="https://test-api.geotrust.com:443/webtrust/query.jws"/>
154
+ </s0:port>
155
+ </s0:service>
156
+ </s0:definitions>