soap-object 0.6.5 → 0.6.6

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.
data/lib/soap-object.rb CHANGED
@@ -1,133 +1,133 @@
1
- require 'savon'
2
- require 'cgi'
3
- require 'soap-object/version'
4
- require 'soap-object/class_methods'
5
- require 'soap-object/factory'
6
-
7
- #
8
- # module to make it simpler to tests SOAP web services. The goal is
9
- # to abstract all information about how your call and parse results
10
- # from the web service within the soap objects.
11
- #
12
- # @example
13
- # class ZipCodeService
14
- # include SoapObject
15
- #
16
- # wsdl 'http://www.webservicex.net/uszip.asmx?WSDL'
17
- #
18
- # def get_zipcode_info(zip_code)
19
- # get_info_by_zip 'USZip' => zip_code
20
- # end
21
- #
22
- # def state
23
- # message[:state]
24
- # end
25
- #
26
- # message
27
- # response.body[:get_info_by_zip_response][:get_info_by_zip_result][:new_data_set][:table]
28
- # end
29
- # end
30
- #
31
- # There are many additional properties that can be set to configure
32
- # the service calls. See the comments for SoapObject::ClassMethods to
33
- # view all of the options.
34
- #
35
- module SoapObject
36
- attr_reader :wsdl, :response
37
-
38
- def initialize
39
- @client = Savon.client(client_properties)
40
- end
41
-
42
- def self.included(cls)
43
- cls.extend SoapObject::ClassMethods
44
- end
45
-
46
- #
47
- # Returns true if the service has established communication with the
48
- # remote server.
49
- #
50
- def connected?
51
- not @client.nil?
52
- end
53
-
54
- #
55
- # Returns an array of operations that can be called on the remote
56
- # service.
57
- #
58
- def operations
59
- @client.operations
60
- end
61
-
62
- #
63
- # Return the xml response
64
- #
65
- def to_xml
66
- response.to_xml
67
- end
68
-
69
- #
70
- # Return value at xpath
71
- #
72
- def xpath(path)
73
- response.xpath(path)
74
- end
75
-
76
- #
77
- # Return the response as a Hash
78
- #
79
- def to_hash
80
- response.hash
81
- end
82
-
83
- #
84
- # Return the body of the message as a Hash
85
- #
86
- def body
87
- response.body
88
- end
89
-
90
- #
91
- # Return the response as a Nokogiri document
92
- #
93
- def doc
94
- response.doc
95
- end
96
-
97
- private
98
- DEFAULT_PROPERTIES = {log: false,
99
- ssl_verify_mode: :none,
100
- ssl_version: :SSLv3}
101
-
102
- def method_missing(*args)
103
- operation =args.shift
104
- message = args.shift
105
- type = message.is_a?(String) ? :xml : :message
106
- call(operation, {type => message})
107
- end
108
-
109
- def call(operation, data)
110
- @response = @client.call(operation, data)
111
- response.to_xml
112
- end
113
-
114
- def client_properties
115
- properties = DEFAULT_PROPERTIES
116
- [:with_wsdl,
117
- :with_proxy,
118
- :with_open_timeout,
119
- :with_read_timeout,
120
- :with_soap_header,
121
- :with_encoding,
122
- :with_basic_auth,
123
- :with_digest_auth,
124
- :with_log_level,
125
- :with_soap_version,
126
- :with_ssl_verification,
127
- :with_ssl_version].each do |sym|
128
- properties = properties.merge(self.send sym) if self.respond_to? sym
129
- end
130
- properties
131
- end
132
-
133
- end
1
+ require 'savon'
2
+ require 'cgi'
3
+ require 'soap-object/version'
4
+ require 'soap-object/class_methods'
5
+ require 'soap-object/ssl_options'
6
+ require 'soap-object/factory'
7
+
8
+ #
9
+ # module to make it simpler to tests SOAP web services. The goal is
10
+ # to abstract all information about how your call and parse results
11
+ # from the web service within the soap objects.
12
+ #
13
+ # @example
14
+ # class ZipCodeService
15
+ # include SoapObject
16
+ #
17
+ # wsdl 'http://www.webservicex.net/uszip.asmx?WSDL'
18
+ #
19
+ # def get_zipcode_info(zip_code)
20
+ # get_info_by_zip 'USZip' => zip_code
21
+ # end
22
+ #
23
+ # def state
24
+ # message[:state]
25
+ # end
26
+ #
27
+ # message
28
+ # response.body[:get_info_by_zip_response][:get_info_by_zip_result][:new_data_set][:table]
29
+ # end
30
+ # end
31
+ #
32
+ # There are many additional properties that can be set to configure
33
+ # the service calls. See the comments for SoapObject::ClassMethods to
34
+ # view all of the options.
35
+ #
36
+ module SoapObject
37
+ attr_reader :wsdl, :response
38
+
39
+ def initialize(platform)
40
+ @client = platform.client(client_properties)
41
+ end
42
+
43
+ def self.included(cls)
44
+ cls.extend SoapObject::ClassMethods
45
+ end
46
+
47
+ #
48
+ # Returns true if the service has established communication with the
49
+ # remote server.
50
+ #
51
+ def connected?
52
+ not @client.nil?
53
+ end
54
+
55
+ #
56
+ # Returns an array of operations that can be called on the remote
57
+ # service.
58
+ #
59
+ def operations
60
+ @client.operations
61
+ end
62
+
63
+ #
64
+ # Return the xml response
65
+ #
66
+ def to_xml
67
+ response.to_xml
68
+ end
69
+
70
+ #
71
+ # Return value at xpath
72
+ #
73
+ def xpath(path)
74
+ response.xpath(path)
75
+ end
76
+
77
+ #
78
+ # Return the response as a Hash
79
+ #
80
+ def to_hash
81
+ response.hash
82
+ end
83
+
84
+ #
85
+ # Return the body of the message as a Hash
86
+ #
87
+ def body
88
+ response.body
89
+ end
90
+
91
+ #
92
+ # Return the response as a Nokogiri document
93
+ #
94
+ def doc
95
+ response.doc
96
+ end
97
+
98
+ private
99
+ DEFAULT_PROPERTIES = {log: false,
100
+ ssl_verify_mode: :none,
101
+ ssl_version: :SSLv3}
102
+
103
+ def method_missing(*args)
104
+ operation =args.shift
105
+ message = args.shift
106
+ type = message.is_a?(String) ? :xml : :message
107
+ call(operation, {type => message})
108
+ end
109
+
110
+ def call(operation, data)
111
+ @response = @client.call(operation, data)
112
+ response.to_xml
113
+ end
114
+
115
+ def client_properties
116
+ properties = DEFAULT_PROPERTIES
117
+ [:with_wsdl,
118
+ :with_proxy,
119
+ :with_open_timeout,
120
+ :with_read_timeout,
121
+ :with_soap_header,
122
+ :with_encoding,
123
+ :with_basic_auth,
124
+ :with_digest_auth,
125
+ :with_log_level,
126
+ :with_soap_version,
127
+ :with_ssl_options].each do |sym|
128
+ properties = properties.merge(self.send sym) if self.respond_to? sym
129
+ end
130
+ properties
131
+ end
132
+
133
+ end
@@ -1,138 +1,131 @@
1
-
2
- module SoapObject
3
- module ClassMethods
4
-
5
- #
6
- # Sets the url for the wsdl. It can be a path to a local file or
7
- # a url to a remote server containing the file.
8
- #
9
- # @param [String] either the local path to or the remote url to
10
- # the wsdl to use for all requests.
11
- #
12
- def wsdl(url)
13
- define_method(:with_wsdl) do
14
- @wsdl ||= url
15
- {wsdl: @wsdl}
16
- end
17
- end
18
-
19
- #
20
- # Set a proxy server to be used. This will be used for retrieving
21
- # the wsdl as well as making the remote requests.
22
- #
23
- # @param [String] the url for the proxy server
24
- #
25
- def proxy(url)
26
- define_method(:with_proxy) do
27
- {proxy: url}
28
- end
29
- end
30
-
31
- #
32
- # Sets the open timeout for retrieving the wsdl and making remote
33
- # requests.
34
- #
35
- # @param [Fixnum] the number of seconds for the timeout value
36
- #
37
- def open_timeout(timeout)
38
- define_method(:with_open_timeout) do
39
- {open_timeout: timeout}
40
- end
41
- end
42
-
43
- #
44
- # Sets the read timeout for retrieving the wsdl and reading the
45
- # results of remote requests.
46
- #
47
- # @param [Fixnum] the number of seconds for the timeout value
48
- #
49
- def read_timeout(timeout)
50
- define_method(:with_read_timeout) do
51
- {read_timeout: timeout}
52
- end
53
- end
54
-
55
- #
56
- # Add custom XML to the soap header.
57
- #
58
- # @param [Hash] will be converted into xml and placed in the soap
59
- # header
60
- #
61
- def soap_header(hsh)
62
- define_method(:with_soap_header) do
63
- {soap_header: hsh}
64
- end
65
- end
66
-
67
- #
68
- # Set the encoding for the message
69
- #
70
- # @param [String] the encoding to use
71
- #
72
- def encoding(enc)
73
- define_method(:with_encoding) do
74
- {encoding: enc}
75
- end
76
- end
77
-
78
- #
79
- # Use basic authentication for all requests
80
- #
81
- # @param [Array] username and password
82
- #
83
- def basic_auth(*name_password)
84
- define_method(:with_basic_auth) do
85
- {basic_auth: name_password}
86
- end
87
- end
88
-
89
- #
90
- # Use digest authentiation for all requests
91
- #
92
- # @param [Array] username and password
93
- #
94
- def digest_auth(*name_password)
95
- define_method(:with_digest_auth) do
96
- {digest_auth: name_password}
97
- end
98
- end
99
-
100
- #
101
- # Set the log level used for logging
102
- #
103
- # [Symbol] valid values are :info, :debug, :warn, :error, and :fatal
104
- #
105
- def log_level(level)
106
- define_method(:with_log_level) do
107
- {log: true, log_level: level, pretty_print_xml: true}
108
- end
109
- end
110
-
111
- def soap_version(version)
112
- define_method(:with_soap_version) do
113
- {soap_version: version}
114
- end
115
- end
116
-
117
-
118
- #
119
- # Enable/Disable SSL verification when calling services over HTTPS (Default is true)
120
- #
121
- # @param [Boolean] valid values are true, false
122
- #
123
- def ssl_verification(enable)
124
- if enable
125
- define_method(:with_ssl_verification) do
126
- {ssl_verify_mode: nil}
127
- end
128
- end
129
- end
130
-
131
- def ssl_version(version)
132
- define_method(:with_ssl_version) do
133
- {ssl_version: version}
134
- end
135
- end
136
-
137
- end
138
- end
1
+
2
+ module SoapObject
3
+ module ClassMethods
4
+
5
+ #
6
+ # Sets the url for the wsdl. It can be a path to a local file or
7
+ # a url to a remote server containing the file.
8
+ #
9
+ # @param [String] either the local path to or the remote url to
10
+ # the wsdl to use for all requests.
11
+ #
12
+ def wsdl(url)
13
+ define_method(:with_wsdl) do
14
+ @wsdl ||= url
15
+ {wsdl: @wsdl}
16
+ end
17
+ end
18
+
19
+ #
20
+ # Set a proxy server to be used. This will be used for retrieving
21
+ # the wsdl as well as making the remote requests.
22
+ #
23
+ # @param [String] the url for the proxy server
24
+ #
25
+ def proxy(url)
26
+ define_method(:with_proxy) do
27
+ {proxy: url}
28
+ end
29
+ end
30
+
31
+ #
32
+ # Sets the open timeout for retrieving the wsdl and making remote
33
+ # requests.
34
+ #
35
+ # @param [Fixnum] the number of seconds for the timeout value
36
+ #
37
+ def open_timeout(timeout)
38
+ define_method(:with_open_timeout) do
39
+ {open_timeout: timeout}
40
+ end
41
+ end
42
+
43
+ #
44
+ # Sets the read timeout for retrieving the wsdl and reading the
45
+ # results of remote requests.
46
+ #
47
+ # @param [Fixnum] the number of seconds for the timeout value
48
+ #
49
+ def read_timeout(timeout)
50
+ define_method(:with_read_timeout) do
51
+ {read_timeout: timeout}
52
+ end
53
+ end
54
+
55
+ #
56
+ # Add custom XML to the soap header.
57
+ #
58
+ # @param [Hash] will be converted into xml and placed in the soap
59
+ # header
60
+ #
61
+ def soap_header(hsh)
62
+ define_method(:with_soap_header) do
63
+ {soap_header: hsh}
64
+ end
65
+ end
66
+
67
+ #
68
+ # Set the encoding for the message
69
+ #
70
+ # @param [String] the encoding to use
71
+ #
72
+ def encoding(enc)
73
+ define_method(:with_encoding) do
74
+ {encoding: enc}
75
+ end
76
+ end
77
+
78
+ #
79
+ # Use basic authentication for all requests
80
+ #
81
+ # @param [Array] username and password
82
+ #
83
+ def basic_auth(*name_password)
84
+ define_method(:with_basic_auth) do
85
+ {basic_auth: name_password}
86
+ end
87
+ end
88
+
89
+ #
90
+ # Use digest authentiation for all requests
91
+ #
92
+ # @param [Array] username and password
93
+ #
94
+ def digest_auth(*name_password)
95
+ define_method(:with_digest_auth) do
96
+ {digest_auth: name_password}
97
+ end
98
+ end
99
+
100
+ #
101
+ # Set the log level used for logging
102
+ #
103
+ # [Symbol] valid values are :info, :debug, :warn, :error, and :fatal
104
+ #
105
+ def log_level(level)
106
+ define_method(:with_log_level) do
107
+ {log: true, log_level: level, pretty_print_xml: true}
108
+ end
109
+ end
110
+
111
+ #
112
+ # Set the ssl options
113
+ #
114
+ # @param [block] Available options in SslOptions class
115
+ #
116
+ def ssl_options(&block)
117
+ ssl = SslOptions.new(&block)
118
+
119
+ define_method(:with_ssl_options) do
120
+ ssl.options
121
+ end
122
+ end
123
+
124
+ def soap_version(version)
125
+ define_method(:with_soap_version) do
126
+ {soap_version: version}
127
+ end
128
+ end
129
+
130
+ end
131
+ end