savon-ng-1.6 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +15 -0
- data/.yardopts +6 -0
- data/CHANGELOG.md +1024 -0
- data/CONTRIBUTING.md +46 -0
- data/Gemfile +8 -0
- data/LICENSE +20 -0
- data/README.md +81 -0
- data/Rakefile +14 -0
- data/donate.png +0 -0
- data/lib/savon/block_interface.rb +26 -0
- data/lib/savon/builder.rb +166 -0
- data/lib/savon/client.rb +88 -0
- data/lib/savon/core_ext/string.rb +29 -0
- data/lib/savon/header.rb +70 -0
- data/lib/savon/http_error.rb +27 -0
- data/lib/savon/log_message.rb +48 -0
- data/lib/savon/message.rb +36 -0
- data/lib/savon/mock/expectation.rb +71 -0
- data/lib/savon/mock/spec_helper.rb +62 -0
- data/lib/savon/mock.rb +5 -0
- data/lib/savon/model.rb +80 -0
- data/lib/savon/operation.rb +127 -0
- data/lib/savon/options.rb +330 -0
- data/lib/savon/qualified_message.rb +49 -0
- data/lib/savon/request.rb +89 -0
- data/lib/savon/request_logger.rb +48 -0
- data/lib/savon/response.rb +112 -0
- data/lib/savon/soap_fault.rb +48 -0
- data/lib/savon/version.rb +5 -0
- data/lib/savon.rb +27 -0
- data/savon.gemspec +47 -0
- data/spec/fixtures/gzip/message.gz +0 -0
- data/spec/fixtures/response/another_soap_fault.xml +14 -0
- data/spec/fixtures/response/authentication.xml +14 -0
- data/spec/fixtures/response/header.xml +13 -0
- data/spec/fixtures/response/list.xml +18 -0
- data/spec/fixtures/response/multi_ref.xml +39 -0
- data/spec/fixtures/response/soap_fault.xml +8 -0
- data/spec/fixtures/response/soap_fault12.xml +18 -0
- data/spec/fixtures/response/taxcloud.xml +1 -0
- data/spec/fixtures/ssl/client_cert.pem +16 -0
- data/spec/fixtures/ssl/client_encrypted_key.pem +30 -0
- data/spec/fixtures/ssl/client_encrypted_key_cert.pem +24 -0
- data/spec/fixtures/ssl/client_key.pem +15 -0
- data/spec/fixtures/wsdl/authentication.xml +63 -0
- data/spec/fixtures/wsdl/betfair.xml +2981 -0
- data/spec/fixtures/wsdl/edialog.xml +15416 -0
- data/spec/fixtures/wsdl/interhome.xml +2137 -0
- data/spec/fixtures/wsdl/lower_camel.xml +52 -0
- data/spec/fixtures/wsdl/multiple_namespaces.xml +92 -0
- data/spec/fixtures/wsdl/multiple_types.xml +60 -0
- data/spec/fixtures/wsdl/taxcloud.xml +934 -0
- data/spec/fixtures/wsdl/team_software.xml +1 -0
- data/spec/fixtures/wsdl/vies.xml +176 -0
- data/spec/fixtures/wsdl/wasmuth.xml +153 -0
- data/spec/integration/email_example_spec.rb +32 -0
- data/spec/integration/ratp_example_spec.rb +28 -0
- data/spec/integration/stockquote_example_spec.rb +28 -0
- data/spec/integration/support/application.rb +82 -0
- data/spec/integration/support/server.rb +84 -0
- data/spec/integration/temperature_example_spec.rb +46 -0
- data/spec/integration/zipcode_example_spec.rb +42 -0
- data/spec/savon/builder_spec.rb +86 -0
- data/spec/savon/client_spec.rb +193 -0
- data/spec/savon/core_ext/string_spec.rb +37 -0
- data/spec/savon/features/message_tag_spec.rb +61 -0
- data/spec/savon/http_error_spec.rb +49 -0
- data/spec/savon/log_message_spec.rb +33 -0
- data/spec/savon/message_spec.rb +40 -0
- data/spec/savon/mock_spec.rb +157 -0
- data/spec/savon/model_spec.rb +154 -0
- data/spec/savon/observers_spec.rb +92 -0
- data/spec/savon/operation_spec.rb +211 -0
- data/spec/savon/options_spec.rb +772 -0
- data/spec/savon/request_spec.rb +493 -0
- data/spec/savon/response_spec.rb +258 -0
- data/spec/savon/soap_fault_spec.rb +126 -0
- data/spec/spec_helper.rb +30 -0
- data/spec/support/endpoint.rb +25 -0
- data/spec/support/fixture.rb +39 -0
- data/spec/support/integration.rb +9 -0
- data/spec/support/stdout.rb +25 -0
- metadata +308 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require "gyoku"
|
2
|
+
|
3
|
+
module Savon
|
4
|
+
class QualifiedMessage
|
5
|
+
|
6
|
+
def initialize(types, used_namespaces, key_converter)
|
7
|
+
@types = types
|
8
|
+
@used_namespaces = used_namespaces
|
9
|
+
@key_converter = key_converter
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_hash(hash, path)
|
13
|
+
return unless hash
|
14
|
+
return hash.map { |value| to_hash(value, path) } if hash.kind_of?(Array)
|
15
|
+
return hash.to_s unless hash.kind_of? Hash
|
16
|
+
|
17
|
+
hash.inject({}) do |newhash, (key, value)|
|
18
|
+
if key == :order!
|
19
|
+
add_namespaces_to_values(value, path)
|
20
|
+
newhash.merge(key => value)
|
21
|
+
else
|
22
|
+
translated_key = Gyoku.xml_tag(key, :key_converter => @key_converter).to_s
|
23
|
+
newpath = path + [translated_key]
|
24
|
+
|
25
|
+
if @used_namespaces[newpath]
|
26
|
+
newhash.merge(
|
27
|
+
"#{@used_namespaces[newpath]}:#{translated_key}" =>
|
28
|
+
to_hash(value, @types[newpath] ? [@types[newpath]] : newpath)
|
29
|
+
)
|
30
|
+
else
|
31
|
+
newhash.merge(translated_key => value)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def add_namespaces_to_values(values, path)
|
40
|
+
values.collect! { |value|
|
41
|
+
camelcased_value = Gyoku.xml_tag(value, :key_converter => @key_converter)
|
42
|
+
namespace_path = path + [camelcased_value.to_s]
|
43
|
+
namespace = @used_namespaces[namespace_path]
|
44
|
+
"#{namespace.blank? ? '' : namespace + ":"}#{camelcased_value}"
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "httpi"
|
2
|
+
|
3
|
+
module Savon
|
4
|
+
class HTTPRequest
|
5
|
+
|
6
|
+
def initialize(globals, http_request = nil)
|
7
|
+
@globals = globals
|
8
|
+
@http_request = http_request || HTTPI::Request.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def build
|
12
|
+
@http_request
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def configure_proxy
|
18
|
+
@http_request.proxy = @globals[:proxy] if @globals.include? :proxy
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure_timeouts
|
22
|
+
@http_request.open_timeout = @globals[:open_timeout] if @globals.include? :open_timeout
|
23
|
+
@http_request.read_timeout = @globals[:read_timeout] if @globals.include? :read_timeout
|
24
|
+
end
|
25
|
+
|
26
|
+
def configure_ssl
|
27
|
+
@http_request.auth.ssl.ssl_version = @globals[:ssl_version] if @globals.include? :ssl_version
|
28
|
+
@http_request.auth.ssl.verify_mode = @globals[:ssl_verify_mode] if @globals.include? :ssl_verify_mode
|
29
|
+
|
30
|
+
@http_request.auth.ssl.cert_key_file = @globals[:ssl_cert_key_file] if @globals.include? :ssl_cert_key_file
|
31
|
+
@http_request.auth.ssl.cert_file = @globals[:ssl_cert_file] if @globals.include? :ssl_cert_file
|
32
|
+
@http_request.auth.ssl.ca_cert_file = @globals[:ssl_ca_cert_file] if @globals.include? :ssl_ca_cert_file
|
33
|
+
|
34
|
+
@http_request.auth.ssl.cert_key_password = @globals[:ssl_cert_key_password] if @globals.include? :ssl_cert_key_password
|
35
|
+
end
|
36
|
+
|
37
|
+
def configure_auth
|
38
|
+
@http_request.auth.basic(*@globals[:basic_auth]) if @globals.include? :basic_auth
|
39
|
+
@http_request.auth.digest(*@globals[:digest_auth]) if @globals.include? :digest_auth
|
40
|
+
@http_request.auth.ntlm(*@globals[:ntlm]) if @globals.include? :ntlm
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
class WSDLRequest < HTTPRequest
|
46
|
+
|
47
|
+
def build
|
48
|
+
configure_proxy
|
49
|
+
configure_timeouts
|
50
|
+
configure_ssl
|
51
|
+
configure_auth
|
52
|
+
|
53
|
+
@http_request
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
class SOAPRequest < HTTPRequest
|
59
|
+
|
60
|
+
CONTENT_TYPE = {
|
61
|
+
1 => "text/xml;charset=%s",
|
62
|
+
2 => "application/soap+xml;charset=%s"
|
63
|
+
}
|
64
|
+
|
65
|
+
def build(options = {})
|
66
|
+
configure_proxy
|
67
|
+
configure_cookies options[:cookies]
|
68
|
+
configure_timeouts
|
69
|
+
configure_headers options[:soap_action]
|
70
|
+
configure_ssl
|
71
|
+
configure_auth
|
72
|
+
|
73
|
+
@http_request
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def configure_cookies(cookies)
|
79
|
+
@http_request.set_cookies(cookies) if cookies
|
80
|
+
end
|
81
|
+
|
82
|
+
def configure_headers(soap_action)
|
83
|
+
@http_request.headers = @globals[:headers] if @globals.include? :headers
|
84
|
+
@http_request.headers["SOAPAction"] ||= %{"#{soap_action}"} if soap_action
|
85
|
+
@http_request.headers["Content-Type"] ||= CONTENT_TYPE[@globals[:soap_version]] % @globals[:encoding]
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "savon/log_message"
|
2
|
+
|
3
|
+
module Savon
|
4
|
+
class RequestLogger
|
5
|
+
|
6
|
+
def initialize(globals)
|
7
|
+
@globals = globals
|
8
|
+
end
|
9
|
+
|
10
|
+
def log(request, &http_request)
|
11
|
+
log_request(request) if log?
|
12
|
+
response = http_request.call
|
13
|
+
log_response(response) if log?
|
14
|
+
|
15
|
+
response
|
16
|
+
end
|
17
|
+
|
18
|
+
def logger
|
19
|
+
@globals[:logger]
|
20
|
+
end
|
21
|
+
|
22
|
+
def log?
|
23
|
+
@globals[:log]
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def log_request(request)
|
29
|
+
logger.info "SOAP request: #{request.url}"
|
30
|
+
logger.info headers_to_log(request.headers)
|
31
|
+
logger.debug body_to_log(request.body)
|
32
|
+
end
|
33
|
+
|
34
|
+
def log_response(response)
|
35
|
+
logger.info "SOAP response (status #{response.code})"
|
36
|
+
logger.debug body_to_log(response.body)
|
37
|
+
end
|
38
|
+
|
39
|
+
def headers_to_log(headers)
|
40
|
+
headers.map { |key, value| "#{key}: #{value}" }.join(", ")
|
41
|
+
end
|
42
|
+
|
43
|
+
def body_to_log(body)
|
44
|
+
LogMessage.new(body, @globals[:filters], @globals[:pretty_print_xml]).to_s
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require "nori"
|
2
|
+
require "savon/soap_fault"
|
3
|
+
require "savon/http_error"
|
4
|
+
|
5
|
+
module Savon
|
6
|
+
class Response
|
7
|
+
|
8
|
+
def initialize(http, globals, locals)
|
9
|
+
@http = http
|
10
|
+
@globals = globals
|
11
|
+
@locals = locals
|
12
|
+
|
13
|
+
build_soap_and_http_errors!
|
14
|
+
raise_soap_and_http_errors! if @globals[:raise_errors]
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :http, :globals, :locals, :soap_fault, :http_error
|
18
|
+
|
19
|
+
def success?
|
20
|
+
!soap_fault? && !http_error?
|
21
|
+
end
|
22
|
+
alias_method :successful?, :success?
|
23
|
+
|
24
|
+
def soap_fault?
|
25
|
+
SOAPFault.present? @http
|
26
|
+
end
|
27
|
+
|
28
|
+
def http_error?
|
29
|
+
HTTPError.present? @http
|
30
|
+
end
|
31
|
+
|
32
|
+
def header
|
33
|
+
find('Header')
|
34
|
+
end
|
35
|
+
|
36
|
+
def body
|
37
|
+
find('Body')
|
38
|
+
end
|
39
|
+
|
40
|
+
alias_method :to_hash, :body
|
41
|
+
|
42
|
+
def to_array(*path)
|
43
|
+
result = path.inject body do |memo, key|
|
44
|
+
return [] if memo[key].nil?
|
45
|
+
memo[key]
|
46
|
+
end
|
47
|
+
|
48
|
+
result.kind_of?(Array) ? result.compact : [result].compact
|
49
|
+
end
|
50
|
+
|
51
|
+
def hash
|
52
|
+
@hash ||= nori.parse(xml)
|
53
|
+
end
|
54
|
+
|
55
|
+
def xml
|
56
|
+
@http.body
|
57
|
+
end
|
58
|
+
|
59
|
+
alias_method :to_xml, :xml
|
60
|
+
alias_method :to_s, :xml
|
61
|
+
|
62
|
+
def doc
|
63
|
+
@doc ||= Nokogiri.XML(xml)
|
64
|
+
end
|
65
|
+
|
66
|
+
def xpath(path, namespaces = nil)
|
67
|
+
doc.xpath(path, namespaces || xml_namespaces)
|
68
|
+
end
|
69
|
+
|
70
|
+
def find(*path)
|
71
|
+
envelope = nori.find(hash, 'Envelope')
|
72
|
+
raise_invalid_response_error! unless envelope
|
73
|
+
|
74
|
+
nori.find(envelope, *path)
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def build_soap_and_http_errors!
|
80
|
+
@soap_fault = SOAPFault.new(@http, nori) if soap_fault?
|
81
|
+
@http_error = HTTPError.new(@http) if http_error?
|
82
|
+
end
|
83
|
+
|
84
|
+
def raise_soap_and_http_errors!
|
85
|
+
raise soap_fault if soap_fault?
|
86
|
+
raise http_error if http_error?
|
87
|
+
end
|
88
|
+
|
89
|
+
def raise_invalid_response_error!
|
90
|
+
raise InvalidResponseError, "Unable to parse response body:\n" + xml.inspect
|
91
|
+
end
|
92
|
+
|
93
|
+
def xml_namespaces
|
94
|
+
@xml_namespaces ||= doc.collect_namespaces
|
95
|
+
end
|
96
|
+
|
97
|
+
def nori
|
98
|
+
return @nori if @nori
|
99
|
+
|
100
|
+
nori_options = {
|
101
|
+
:strip_namespaces => @globals[:strip_namespaces],
|
102
|
+
:convert_tags_to => @globals[:convert_response_tags_to],
|
103
|
+
:advanced_typecasting => @locals[:advanced_typecasting],
|
104
|
+
:parser => @locals[:response_parser]
|
105
|
+
}
|
106
|
+
|
107
|
+
non_nil_nori_options = nori_options.reject { |_, value| value.nil? }
|
108
|
+
@nori = Nori.new(non_nil_nori_options)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "savon"
|
2
|
+
|
3
|
+
module Savon
|
4
|
+
class SOAPFault < Error
|
5
|
+
|
6
|
+
def self.present?(http)
|
7
|
+
fault_node = http.body.include?("Fault>")
|
8
|
+
soap1_fault = http.body.include?("faultcode>") && http.body.include?("faultstring>")
|
9
|
+
soap2_fault = http.body.include?("Code>") && http.body.include?("Reason>")
|
10
|
+
|
11
|
+
fault_node && (soap1_fault || soap2_fault)
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(http, nori)
|
15
|
+
@http = http
|
16
|
+
@nori = nori
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :http, :nori
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
fault = nori.find(to_hash, 'Fault')
|
23
|
+
message_by_version(fault)
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_hash
|
27
|
+
parsed = nori.parse(@http.body)
|
28
|
+
nori.find(parsed, 'Envelope', 'Body')
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def message_by_version(fault)
|
34
|
+
if nori.find(fault, 'faultcode')
|
35
|
+
code = nori.find(fault, 'faultcode')
|
36
|
+
text = nori.find(fault, 'faultstring')
|
37
|
+
|
38
|
+
"(#{code}) #{text}"
|
39
|
+
elsif nori.find(fault, 'Code')
|
40
|
+
code = nori.find(fault, 'Code', 'Value')
|
41
|
+
text = nori.find(fault, 'Reason', 'Text')
|
42
|
+
|
43
|
+
"(#{code}) #{text}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
data/lib/savon.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Savon
|
2
|
+
|
3
|
+
Error = Class.new(RuntimeError)
|
4
|
+
InitializationError = Class.new(Error)
|
5
|
+
UnknownOptionError = Class.new(Error)
|
6
|
+
UnknownOperationError = Class.new(Error)
|
7
|
+
InvalidResponseError = Class.new(Error)
|
8
|
+
|
9
|
+
def self.client(globals = {}, &block)
|
10
|
+
Client.new(globals, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.observers
|
14
|
+
@observers ||= []
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.notify_observers(operation_name, builder, globals, locals)
|
18
|
+
observers.inject(nil) do |response, observer|
|
19
|
+
observer.notify(operation_name, builder, globals, locals)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
require "savon/version"
|
26
|
+
require "savon/client"
|
27
|
+
require "savon/model"
|
data/savon.gemspec
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$:.unshift lib unless $:.include? lib
|
4
|
+
|
5
|
+
require "savon/version"
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "savon-ng-1.6"
|
9
|
+
s.version = Savon::VERSION
|
10
|
+
s.authors = "Rafael Reggiani Manzo"
|
11
|
+
s.email = "rr.manzo@gmail.com"
|
12
|
+
s.homepage = "http://savonrb.com"
|
13
|
+
s.summary = "This a fork from Daniel Harrington's savon with nokogiri updated to 1.6"
|
14
|
+
s.description = s.summary
|
15
|
+
|
16
|
+
s.rubyforge_project = s.name
|
17
|
+
s.license = 'MIT'
|
18
|
+
|
19
|
+
s.add_dependency "nori", "~> 2.3.0"
|
20
|
+
|
21
|
+
s.add_dependency "nokogiri", ">= 1.4.0"
|
22
|
+
s.add_dependency "httpi", "~> 2.1.0"
|
23
|
+
s.add_dependency "wasabi-ng-1.6", "~> 3.3.0"
|
24
|
+
s.add_dependency "akami", "~> 1.2.0"
|
25
|
+
s.add_dependency "gyoku", "~> 1.1.0"
|
26
|
+
|
27
|
+
s.add_dependency "builder", ">= 2.1.2"
|
28
|
+
|
29
|
+
s.add_development_dependency "rack"
|
30
|
+
s.add_development_dependency "puma", "2.0.0.b4"
|
31
|
+
|
32
|
+
s.add_development_dependency "rake", "~> 10.1"
|
33
|
+
s.add_development_dependency "rspec", "~> 2.14"
|
34
|
+
s.add_development_dependency "mocha", "~> 0.14"
|
35
|
+
s.add_development_dependency "json", "~> 1.7"
|
36
|
+
|
37
|
+
ignores = File.readlines(".gitignore").grep(/\S+/).map(&:chomp)
|
38
|
+
dotfiles = %w[.gitignore .travis.yml .yardopts]
|
39
|
+
|
40
|
+
all_files_without_ignores = Dir["**/*"].reject { |f|
|
41
|
+
File.directory?(f) || ignores.any? { |i| File.fnmatch(i, f) }
|
42
|
+
}
|
43
|
+
|
44
|
+
s.files = (all_files_without_ignores + dotfiles).sort
|
45
|
+
|
46
|
+
s.require_path = "lib"
|
47
|
+
end
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
|
2
|
+
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
|
4
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
5
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
6
|
+
<SOAP-ENV:Body>
|
7
|
+
<SOAP-ENV:Fault>
|
8
|
+
<faultcode>ERR_NO_SESSION</faultcode>
|
9
|
+
<faultfactor>doGetItemsInfo - Wrong session</faultfactor>
|
10
|
+
<faultstring>Wrong session message</faultstring>
|
11
|
+
<detail><soapVal><ERRNO xsi:type="xsd:string">80:1289245853:55</ERRNO></soapVal></detail>
|
12
|
+
</SOAP-ENV:Fault>
|
13
|
+
</SOAP-ENV:Body>
|
14
|
+
</SOAP-ENV:Envelope>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
2
|
+
<soap:Body>
|
3
|
+
<ns2:authenticateResponse xmlns:ns2="http://v1_0.ws.user.example.com">
|
4
|
+
<return>
|
5
|
+
<authenticationValue>
|
6
|
+
<token>a68d1d6379b62ff339a0e0c69ed4d9cf</token>
|
7
|
+
<tokenHash>AAAJxA;cIedoT;mY10ExZwG6JuKgp2OYKxow==</tokenHash>
|
8
|
+
<client>radclient</client>
|
9
|
+
</authenticationValue>
|
10
|
+
<success>true</success>
|
11
|
+
</return>
|
12
|
+
</ns2:authenticateResponse>
|
13
|
+
</soap:Body>
|
14
|
+
</soap:Envelope>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
3
|
+
<soap:Header xmlns="http://webservices.somewhere.com/definitions">
|
4
|
+
<SessionNumber>ABCD1234</SessionNumber>
|
5
|
+
</soap:Header>
|
6
|
+
<soap:Body>
|
7
|
+
<AuthenticateReply xmlns="http://xml.somewhere.com/ABCD">
|
8
|
+
<processStatus>
|
9
|
+
<statusCode>P</statusCode>
|
10
|
+
</processStatus>
|
11
|
+
</AuthenticateReply>
|
12
|
+
</soap:Body>
|
13
|
+
</soap:Envelope>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
2
|
+
<soapenv:Body>
|
3
|
+
<MultiNamespacedEntryResponse xmlns="http://www.example.com/BusinessRulesEngine/xsd">
|
4
|
+
<history>
|
5
|
+
<ns10:case xmlns:ns10="http://www.example.com/Common/xsd">
|
6
|
+
<ns10:logTime>2010-09-21T18:22:01.558+10:00</ns10:logTime>
|
7
|
+
<ns10:logType>Notes Log</ns10:logType>
|
8
|
+
<ns10:logText>test</ns10:logText>
|
9
|
+
</ns10:case>
|
10
|
+
<ns11:case xmlns:ns11="http://www.example.com/Common/xsd">
|
11
|
+
<ns11:logTime>2010-09-21T18:22:07.038+10:00</ns11:logTime>
|
12
|
+
<ns11:logType>Notes Log</ns11:logType>
|
13
|
+
<ns11:logText>another test</ns11:logText>
|
14
|
+
</ns11:case>
|
15
|
+
</history>
|
16
|
+
</MultiNamespacedEntryResponse>
|
17
|
+
</soapenv:Body>
|
18
|
+
</soapenv:Envelope>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
2
|
+
<soapenv:Body>
|
3
|
+
<ns1:listResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://ws.example.com">
|
4
|
+
<listReturn soapenc:arrayType="ns2:HistoryEntry[3]" xsi:type="soapenc:Array" xmlns:ns2="http://ws.example.com/ws/history" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
5
|
+
<listReturn href="#id0"/>
|
6
|
+
<listReturn href="#id1"/>
|
7
|
+
<listReturn href="#id2"/>
|
8
|
+
</listReturn>
|
9
|
+
</ns1:listResponse>
|
10
|
+
<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns5:HistoryEntry" xmlns:ns5="http://ws.example.com/ws/history" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
11
|
+
<date xsi:type="xsd:dateTime">2009-09-22T13:47:23.000Z</date>
|
12
|
+
<location xsi:type="soapenc:string">Archive</location>
|
13
|
+
<mailId href="#id9"/>
|
14
|
+
<referenceId href="#id8"/>
|
15
|
+
<state xsi:type="soapenc:string">Original</state>
|
16
|
+
<subject xsi:type="soapenc:string">Mail from 09-22-2009: Misc</subject>
|
17
|
+
</multiRef>
|
18
|
+
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns6:HistoryEntry" xmlns:ns6="http://ws.example.com/ws/history" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
19
|
+
<date xsi:type="xsd:dateTime">2009-04-30T06:38:34.000Z</date>
|
20
|
+
<location xsi:type="soapenc:string">Archive</location>
|
21
|
+
<mailId href="#id10"/>
|
22
|
+
<referenceId href="#id8"/>
|
23
|
+
<state xsi:type="soapenc:string">Original</state>
|
24
|
+
<subject xsi:type="soapenc:string">Mail from 04-29-2009: Technical support</subject>
|
25
|
+
</multiRef>
|
26
|
+
<multiRef id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns7:HistoryEntry" xmlns:ns7="http://ws.example.com/ws/history" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
|
27
|
+
<date xsi:type="xsd:dateTime">2009-12-18T15:43:21.000Z</date>
|
28
|
+
<location xsi:type="soapenc:string">Archive</location>
|
29
|
+
<mailId href="#id11"/>
|
30
|
+
<referenceId href="#id8"/>
|
31
|
+
<state xsi:type="soapenc:string">Original</state>
|
32
|
+
<subject xsi:type="soapenc:string">Mail from 12-17-2009: Misc</subject>
|
33
|
+
</multiRef>
|
34
|
+
<multiRef id="id11" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">972219</multiRef>
|
35
|
+
<multiRef id="id10" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">708021</multiRef>
|
36
|
+
<multiRef id="id8" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef>
|
37
|
+
<multiRef id="id9" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">855763</multiRef>
|
38
|
+
</soapenv:Body>
|
39
|
+
</soapenv:Envelope>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="http://www.example.org/timeouts">
|
2
|
+
<soap:Body>
|
3
|
+
<soap:Fault>
|
4
|
+
<Code>
|
5
|
+
<Value>soap:Sender</Value>
|
6
|
+
<Subcode>
|
7
|
+
<Value>m:MessageTimeout</Value>
|
8
|
+
</Subcode>
|
9
|
+
</Code>
|
10
|
+
<Reason>
|
11
|
+
<Text xml:lang="en">Sender Timeout</Text>
|
12
|
+
</Reason>
|
13
|
+
<Detail>
|
14
|
+
<m:MaxTime>P5M</m:MaxTime>
|
15
|
+
</Detail>
|
16
|
+
</soap:Fault>
|
17
|
+
</soap:Body>
|
18
|
+
</soap:Envelope>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?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><LookupResponse xmlns="http://taxcloud.net"><LookupResult><ResponseType>Error</ResponseType><Messages><ResponseMessage><ResponseType>Error</ResponseType><Message>Invalid apiLoginID and/or apiKey</Message></ResponseMessage></Messages><CartItemsResponse /></LookupResult></LookupResponse></soap:Body></soap:Envelope>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIICbTCCAdYCCQDC4v8d04615DANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJE
|
3
|
+
RTEQMA4GA1UECBMHSGFtYnVyZzEQMA4GA1UEBxMHSGFtYnVyZzEOMAwGA1UEChMF
|
4
|
+
aHR0cGkxFDASBgNVBAMTC2V4YW1wbGUuY29tMSIwIAYJKoZIhvcNAQkBFhNleGFt
|
5
|
+
cGxlQGV4YW1wbGUuY29tMB4XDTEwMTAxNTE4NTg0N1oXDTExMTAxNTE4NTg0N1ow
|
6
|
+
ezELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1
|
7
|
+
cmcxDjAMBgNVBAoTBWh0dHBpMRQwEgYDVQQDEwtleGFtcGxlLmNvbTEiMCAGCSqG
|
8
|
+
SIb3DQEJARYTZXhhbXBsZUBleGFtcGxlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB
|
9
|
+
jQAwgYkCgYEAvJiaojIFQAbFczXkBmjxpxra9LbQm0VIESFSl8uBSjmG/gmCBwKg
|
10
|
+
8O94P3tAjDNClC+fEqBLE37KH4qe76yw7upgRruP5jQzUEL1yCaVtA/DoqgaCxZy
|
11
|
+
7VhB2A3f71Zw6kQPt3BOME68fnGsTX65x9XAawCGzGmJSk/Z6wvml1MCAwEAATAN
|
12
|
+
BgkqhkiG9w0BAQUFAAOBgQCxOyni9LOKf17vUKVG8Y4TBzRYwm8/hlEdVEU3JKG0
|
13
|
+
/aCCwIJLHl+z+3L4r81IN3+YKrHilqx9K0emboJbBRQklYsv/AE+J44Bq3llRiro
|
14
|
+
0e5zwH61jb1j+kxhcxoGiiy8R7hYho24ljuMgFGqtK3kZSP/t9tBLLVp+ItWQ6xX
|
15
|
+
5g==
|
16
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
2
|
+
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIi+Fi+FH7OtACAggA
|
3
|
+
MBQGCCqGSIb3DQMHBAivzaRTYRNk4QSCBMhnQ7/NN0ljkAwADHknQi4dgbBU+FV+
|
4
|
+
vY+ypRCTLp7UongPMDS+pC6TyOFGeHz4Yri3UvmEIN5DlBlAfjPI6+lBswjOIrpw
|
5
|
+
6CaZXrX4oefjh73c2OcQlYKw9w03ppfmfO0v1t6oPLiK6M8sNQ5lgb8d9eG3r6Dp
|
6
|
+
LqIp4I6WeGcoXIpVYE35sz6wmLQ2Q626KY/5BPVAgMVG3K1g1haxZIAQBQE63cqz
|
7
|
+
JK3IUiG2r6Q6vOyZ+Iz9KolEf3RVvW/RgOrb0dLbbLkDOL8G6dXDgWEeYtqGZpPR
|
8
|
+
BktU2Kf7lr0BAgbI3eLubmIufhonoV4VkHVYu1ZSACwSl2HEqDl5aF5hP3wOtfS5
|
9
|
+
Ls62Z1ATO/24dG1oI8xL3YCeTzoa1Lmyeh+HFRncoVU5CdQgyzY9d5yr1x70AwN+
|
10
|
+
MpVwd0+WGyESiRVd4dN8n99SY/bTaYJxv8P+wOrbjld9Q3mF3vxx6Nkkfboai1wD
|
11
|
+
bY9i/B5/TZip5FBnZbJiYakc+yoB6Bf1UuIZA9T9EIY2K7VhTeuEjTTqJVf7dp/C
|
12
|
+
ZqVSNCHO3eAUMByrshznw2YCia8Q1VAXgIbnZ8RvUxxIZVUDTxuWPkBJkcrmMgKt
|
13
|
+
GvD2YYIOIuFwTLCFBTlcXNl8kNYc9VRAnK7efi9xrzINod0VSV5hj1PYT4e2khnS
|
14
|
+
4cngMTbbNwWP8Rg7pSxzwWIwc8Zkytde5gnfkBFv+g8o+JRM2ZB3wkiUhEkf0Vht
|
15
|
+
gl3K9LFqdqN+EsRjXR/a16sVK3Uer7zcy/NLzvo/rF0YKRmb+apDIFO/vtCX9qyH
|
16
|
+
+pBofVO+RNb2T2ZY1iSvyjv/d7nNXRnLArecralQjekh+AKIBsl5R0nsSnQu6ydn
|
17
|
+
yDteKDuOPnVl4qQowVbmGg7juHW9j4u98H7cW4RN/txegG1J7gbFFdl2bjYQ/PGZ
|
18
|
+
iAG53QvjmvRRaiPCNOB3PYm1yO/1vCPAKlOeBYywF53BSxCDx9OjP0eXROdQGiZV
|
19
|
+
XEkDqf742R9/8Fy1ETcriEzRVWv4nSRmB+yfMfHcTZZiJnEF9RUYQVxBVfpwBi8t
|
20
|
+
I8N46L2iNeY4itbN8Ke3U3EfntdoZMNI1uN/haDmLFuRuzZIBkSl3YsnsDJXaT5P
|
21
|
+
KjPPiZWkxsC3KUYeisefjNHonkM6JXqAy9ElyWrjSPhioMLTy3Qwus8NPGLWkMfI
|
22
|
+
bpy7Z63xRf9tifXoANLOqC/VVXOCn4m/eEUAMi0EQZ7QbysopFigiri/MFidXf90
|
23
|
+
aIUMiPmCTzLDBJfHozyalMVf3aJFbDJdlAmFtasAP1aPgqReAb9s+6U3wkE8VtGB
|
24
|
+
rneBPhejj9FzrWMludgPLDRvfzr6/0nG2GC7XbOnKPd0RbKFtZaJuT18Jhil5Bwb
|
25
|
+
S2MBrUnxMmOge9N5ZIyzXk+lPFRMkHmY64h+P/Op9w8tVYCFlj4HjAboVpJAGIq4
|
26
|
+
gPgT3Q/0ghRyyBjBrmSDuk+/1s7qc/lWUONFAJaSCRdhpM9I8il5QYHPM6Z9JCg+
|
27
|
+
PrfHftP+bU0xht7mVI5ew1OjWTZEym0/ALEyqddLz0qFYejKSemx8EMze8cN2wEE
|
28
|
+
OTAqyVBLo+7HJ2FbIXMgRNSc4P77jmeEG0/4WsreMOeI1/6nOiwqvipuLY9ojc9v
|
29
|
+
TGQ=
|
30
|
+
-----END ENCRYPTED PRIVATE KEY-----
|
@@ -0,0 +1,24 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIEBTCCAu2gAwIBAgIJAKoJLHwFIyVbMA0GCSqGSIb3DQEBBQUAMIGYMQswCQYD
|
3
|
+
VQQGEwJVUzERMA8GA1UECAwIVmlyZ2luaWExEzARBgNVBAcMCkFsZXhhbmRyaWEx
|
4
|
+
GDAWBgNVBAoMD1Rlc3RpbmcgQ28sIExMQzEQMA4GA1UECwwHVGVzdGluZzEUMBIG
|
5
|
+
A1UEAwwLZXhhbXBsZS5jb20xHzAdBgkqhkiG9w0BCQEWEHRlc3RAZXhhbXBsZS5j
|
6
|
+
b20wHhcNMTMwMTI1MTUwNDEwWhcNNDMwMTE4MTUwNDEwWjCBmDELMAkGA1UEBhMC
|
7
|
+
VVMxETAPBgNVBAgMCFZpcmdpbmlhMRMwEQYDVQQHDApBbGV4YW5kcmlhMRgwFgYD
|
8
|
+
VQQKDA9UZXN0aW5nIENvLCBMTEMxEDAOBgNVBAsMB1Rlc3RpbmcxFDASBgNVBAMM
|
9
|
+
C2V4YW1wbGUuY29tMR8wHQYJKoZIhvcNAQkBFhB0ZXN0QGV4YW1wbGUuY29tMIIB
|
10
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4gYiV5ufeedy/paVEJ9eJAZo
|
11
|
+
t3zFO+9UJzrIFWGhDdTB8AwX6ZE3koKV105i3nRKN+I6dS6+7APB607CqTqdzuqa
|
12
|
+
/5qLnV2d73BuTAZabeClE4/8HXsDoQH42KcPQfVQ/nCuTPjuGUEUqIWVFpwKcZmV
|
13
|
+
UP82Ezf31fOqtzVI6cSgOwWSflgFFdKRyCk0R1eNznRj2rvfYtypIplV715d1Qqk
|
14
|
+
k+XXmMIWIobNT/utgf6n39e89VPzu9EZ5vSpCflWvCkeAnjavWLD/MJktRJqQqlx
|
15
|
+
dFTWvzIxYAhJR6M+zB4a6UGDzj6NG1ujrtIdBaK1Jq6iXO4WDryRMs8RPF0UmwID
|
16
|
+
AQABo1AwTjAdBgNVHQ4EFgQUjEykvRbAg/ju1UIvMuozlXzKRpYwHwYDVR0jBBgw
|
17
|
+
FoAUjEykvRbAg/ju1UIvMuozlXzKRpYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
|
18
|
+
AQUFAAOCAQEAhvgvCfZcQlEJwRZMYd1AUOS39fs90Nc5hezaIN1I6bqzW0+ka45Y
|
19
|
+
MAxcq7BTOZfVO+DTEAB/IW7yR4Np8mzWSp7gDnyP3wyOX4Lce2lUZQ2fQI71pupf
|
20
|
+
tXwpp0bGGgzeUeJK8MFBUiFMUBiJuUMsY2hYIqJ2gYlazMEQp67jV0fdgcgj3nak
|
21
|
+
3cnC9GbHZj/QXwRAlj3dp1CDrMHqvbrCZ6jW7YS/+dVUn24oMadyIX0E88EBgP+l
|
22
|
+
Wu4gvzn2nkV8L4Ukcspt7Mqvr/YGlWu/8GPVACUp1AdZH7YJ7ARZE7SVgxR/iNGd
|
23
|
+
HJclQ/939s63ZNrnsOR+6qrhcC3c83UARw==
|
24
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXQIBAAKBgQC8mJqiMgVABsVzNeQGaPGnGtr0ttCbRUgRIVKXy4FKOYb+CYIH
|
3
|
+
AqDw73g/e0CMM0KUL58SoEsTfsofip7vrLDu6mBGu4/mNDNQQvXIJpW0D8OiqBoL
|
4
|
+
FnLtWEHYDd/vVnDqRA+3cE4wTrx+caxNfrnH1cBrAIbMaYlKT9nrC+aXUwIDAQAB
|
5
|
+
AoGBAKjrGh1KJg+pwPInA5yGJGMil5h1obRgwmKtcPeKi7u6eOFSDMdQoGwMYKyj
|
6
|
+
LTYlt21Yleat8XB9sHW9yAstpq5dU8Id2A4wfbJeaBYpek7u5+QwBENO4UrnulTk
|
7
|
+
W0d+jECBVYECn8wCStxfoFcQQRhlGrsOn05379cD8e1odMOJAkEA3o/7CsgXqahG
|
8
|
+
7L1HaWYtKnpFfTS+EQgdGvSahOolByAKTtMA2TUBU1FdlCk+ggWBGorqmWON5Qnm
|
9
|
+
7UDHjOasZQJBANjuPOqa9ubqHccGwHec+72pQz6q5e8f1gf1XPn7EEuXsBzYiMMH
|
10
|
+
qEa8zpfF0TmhQ0oWN75Cq709gfVVBfx/bVcCQHan1HN/Ef6FlKqKjxQGQXYwEfQa
|
11
|
+
tmpmJP5GAktyeaM+1cAIhp9GvxooeveOtaCkRpxcC48ToIbHrLI4oyrfoHECQQC6
|
12
|
+
bAHtmz6TMp5ka2j7Yez1EIC5WiQ/WxyTukgsi5V1YOX35B2jfPEf2SGxTE6BOBSb
|
13
|
+
lnxRBPqRpkoIiwiZ9OgBAkBOWKBuHXmXM6wr+0p4KQ/DOeStZiBxUT8rYbX/i1BI
|
14
|
+
/9Xo48KNerTx7qoDK+jIslDrilahvcwUz0fuVV7rHy/X
|
15
|
+
-----END RSA PRIVATE KEY-----
|