soap-object 0.6.5 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
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