soap-object 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,128 +1,132 @@
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
-
99
- def method_missing(*args)
100
- operation =args.shift
101
- message = args.shift
102
- type = message.is_a?(String) ? :xml : :message
103
- call(operation, {type => message})
104
- end
105
-
106
- def call(operation, data)
107
- @response = @client.call(operation, data)
108
- response.to_xml
109
- end
110
-
111
- def client_properties
112
- properties = { log: false }
113
- [:with_wsdl,
114
- :with_proxy,
115
- :with_open_timeout,
116
- :with_read_timeout,
117
- :with_soap_header,
118
- :with_encoding,
119
- :with_basic_auth,
120
- :with_digest_auth,
121
- :with_log_level,
122
- :with_ssl_verification].each do |sym|
123
- properties = properties.merge(self.send sym) if self.respond_to? sym
124
- end
125
- properties
126
- end
127
-
128
- end
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_ssl_verification,
126
+ :with_ssl_version].each do |sym|
127
+ properties = properties.merge(self.send sym) if self.respond_to? sym
128
+ end
129
+ properties
130
+ end
131
+
132
+ end
@@ -1,125 +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}
108
- end
109
- end
110
-
111
- #
112
- # Enable/Disable SSL verification when calling services over HTTPS (Default is true)
113
- #
114
- # @param [Boolean] valid values are true, false
115
- #
116
- def ssl_verification(enable)
117
- unless enable
118
- define_method(:with_ssl_verification) do
119
- {ssl_verify_mode: :none}
120
- end
121
- end
122
- end
123
-
124
- end
125
- 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
+ # Enable/Disable SSL verification when calling services over HTTPS (Default is true)
113
+ #
114
+ # @param [Boolean] valid values are true, false
115
+ #
116
+ def ssl_verification(enable)
117
+ if enable
118
+ define_method(:with_ssl_verification) do
119
+ {ssl_verify_mode: nil}
120
+ end
121
+ end
122
+ end
123
+
124
+ def ssl_version(version)
125
+ define_method(:with_ssl_version) do
126
+ {ssl_version: version}
127
+ end
128
+ end
129
+
130
+ end
131
+ end