soap-object 0.5.1 → 0.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.
@@ -1,114 +1,120 @@
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 the response as a Hash
71
- #
72
- def to_hash
73
- response.hash
74
- end
75
-
76
- #
77
- # Return the body of the message as a Hash
78
- #
79
- def body
80
- response.body
81
- end
82
-
83
- #
84
- # Return the response as a Nokogiri document
85
- #
86
- def doc
87
- response.doc
88
- end
89
-
90
- private
91
-
92
- def method_missing(*args)
93
- method = args.shift
94
- @response = @client.call(method, {message: args.shift})
95
- response.to_xml
96
- end
97
-
98
- def client_properties
99
- properties = {}
100
- [:with_wsdl,
101
- :with_proxy,
102
- :with_open_timeout,
103
- :with_read_timeout,
104
- :with_soap_header,
105
- :with_encoding,
106
- :with_basic_auth,
107
- :with_digest_auth,
108
- :with_log_level].each do |sym|
109
- properties = properties.merge(self.send sym) if self.respond_to? sym
110
- end
111
- properties
112
- end
113
-
114
- 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 the response as a Hash
71
+ #
72
+ def to_hash
73
+ response.hash
74
+ end
75
+
76
+ #
77
+ # Return the body of the message as a Hash
78
+ #
79
+ def body
80
+ response.body
81
+ end
82
+
83
+ #
84
+ # Return the response as a Nokogiri document
85
+ #
86
+ def doc
87
+ response.doc
88
+ end
89
+
90
+ private
91
+
92
+ def method_missing(*args)
93
+ operation =args.shift
94
+ message = args.shift
95
+ type = message.is_a?(String) ? :xml : :message
96
+ call(operation, {type => message})
97
+ end
98
+
99
+ def call(operation, data)
100
+ @response = @client.call(operation, data)
101
+ response.to_xml
102
+ end
103
+
104
+ def client_properties
105
+ properties = { log: false }
106
+ [:with_wsdl,
107
+ :with_proxy,
108
+ :with_open_timeout,
109
+ :with_read_timeout,
110
+ :with_soap_header,
111
+ :with_encoding,
112
+ :with_basic_auth,
113
+ :with_digest_auth,
114
+ :with_log_level].each do |sym|
115
+ properties = properties.merge(self.send sym) if self.respond_to? sym
116
+ end
117
+ properties
118
+ end
119
+
120
+ end
@@ -1,111 +1,111 @@
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 [Stroing] 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_level: level}
108
- end
109
- end
110
- end
111
- 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 [Stroing] 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
+ end
111
+ end