billwise4r 0.1.1 → 0.2.2
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/.gitignore +42 -0
- data/Gemfile +2 -9
- data/Gemfile.lock +34 -24
- data/README.md +1 -1
- data/Rakefile +1 -51
- data/billwise4r.gemspec +23 -70
- data/lib/billwise4r/version.rb +3 -0
- data/lib/billwise4r.rb +120 -4
- data/spec/billwise4r_spec.rb +30 -11
- data/spec/config/config.yml +1 -1
- data/spec/connect_sm_service.wsdl +6137 -3573
- data/spec/spec_helper.rb +1 -1
- metadata +75 -166
- data/VERSION +0 -1
- data/lib/billwise4r/billwise4r.rb +0 -90
- data/spec/config/.gitignore +0 -1
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,212 +1,121 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: billwise4r
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
prerelease:
|
|
6
|
-
segments:
|
|
7
|
-
- 0
|
|
8
|
-
- 1
|
|
9
|
-
- 1
|
|
10
|
-
version: 0.1.1
|
|
11
6
|
platform: ruby
|
|
12
|
-
authors:
|
|
7
|
+
authors:
|
|
13
8
|
- Jason Goecke
|
|
9
|
+
- John Dyer
|
|
14
10
|
autorequire:
|
|
15
11
|
bindir: bin
|
|
16
12
|
cert_chain: []
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type: :runtime
|
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
24
|
-
none: false
|
|
25
|
-
requirements:
|
|
26
|
-
- - ">="
|
|
27
|
-
- !ruby/object:Gem::Version
|
|
28
|
-
hash: 3
|
|
29
|
-
segments:
|
|
30
|
-
- 0
|
|
31
|
-
version: "0"
|
|
32
|
-
name: savon
|
|
33
|
-
version_requirements: *id001
|
|
34
|
-
prerelease: false
|
|
35
|
-
- !ruby/object:Gem::Dependency
|
|
36
|
-
type: :runtime
|
|
37
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
|
13
|
+
date: 2011-11-07 00:00:00.000000000Z
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: rspec
|
|
17
|
+
requirement: &70250000246040 !ruby/object:Gem::Requirement
|
|
38
18
|
none: false
|
|
39
|
-
requirements:
|
|
40
|
-
- -
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
|
|
43
|
-
segments:
|
|
44
|
-
- 0
|
|
45
|
-
version: "0"
|
|
46
|
-
name: multi_xml
|
|
47
|
-
version_requirements: *id002
|
|
48
|
-
prerelease: false
|
|
49
|
-
- !ruby/object:Gem::Dependency
|
|
19
|
+
requirements:
|
|
20
|
+
- - ! '>='
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '0'
|
|
50
23
|
type: :development
|
|
51
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
|
52
|
-
none: false
|
|
53
|
-
requirements:
|
|
54
|
-
- - ">="
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
hash: 3
|
|
57
|
-
segments:
|
|
58
|
-
- 0
|
|
59
|
-
version: "0"
|
|
60
|
-
name: shoulda
|
|
61
|
-
version_requirements: *id003
|
|
62
24
|
prerelease: false
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
25
|
+
version_requirements: *70250000246040
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: fakeweb
|
|
28
|
+
requirement: &70250000245580 !ruby/object:Gem::Requirement
|
|
66
29
|
none: false
|
|
67
|
-
requirements:
|
|
68
|
-
- -
|
|
69
|
-
- !ruby/object:Gem::Version
|
|
70
|
-
|
|
71
|
-
segments:
|
|
72
|
-
- 1
|
|
73
|
-
- 0
|
|
74
|
-
- 0
|
|
75
|
-
version: 1.0.0
|
|
76
|
-
name: bundler
|
|
77
|
-
version_requirements: *id004
|
|
78
|
-
prerelease: false
|
|
79
|
-
- !ruby/object:Gem::Dependency
|
|
30
|
+
requirements:
|
|
31
|
+
- - ! '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
80
34
|
type: :development
|
|
81
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
|
82
|
-
none: false
|
|
83
|
-
requirements:
|
|
84
|
-
- - ~>
|
|
85
|
-
- !ruby/object:Gem::Version
|
|
86
|
-
hash: 1
|
|
87
|
-
segments:
|
|
88
|
-
- 1
|
|
89
|
-
- 5
|
|
90
|
-
- 1
|
|
91
|
-
version: 1.5.1
|
|
92
|
-
name: jeweler
|
|
93
|
-
version_requirements: *id005
|
|
94
35
|
prerelease: false
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
36
|
+
version_requirements: *70250000245580
|
|
37
|
+
- !ruby/object:Gem::Dependency
|
|
38
|
+
name: awesome_print
|
|
39
|
+
requirement: &70250000245160 !ruby/object:Gem::Requirement
|
|
98
40
|
none: false
|
|
99
|
-
requirements:
|
|
100
|
-
- -
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
|
|
103
|
-
segments:
|
|
104
|
-
- 0
|
|
105
|
-
version: "0"
|
|
106
|
-
name: rcov
|
|
107
|
-
version_requirements: *id006
|
|
108
|
-
prerelease: false
|
|
109
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
+
requirements:
|
|
42
|
+
- - ! '>='
|
|
43
|
+
- !ruby/object:Gem::Version
|
|
44
|
+
version: '0'
|
|
110
45
|
type: :development
|
|
111
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
|
112
|
-
none: false
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
hash: 3
|
|
117
|
-
segments:
|
|
118
|
-
- 0
|
|
119
|
-
version: "0"
|
|
120
|
-
name: awesome_print
|
|
121
|
-
version_requirements: *id007
|
|
122
46
|
prerelease: false
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
|
126
|
-
none: false
|
|
127
|
-
requirements:
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
hash: 3
|
|
131
|
-
segments:
|
|
132
|
-
- 0
|
|
133
|
-
version: "0"
|
|
47
|
+
version_requirements: *70250000245160
|
|
48
|
+
- !ruby/object:Gem::Dependency
|
|
134
49
|
name: savon
|
|
135
|
-
|
|
50
|
+
requirement: &70250000244740 !ruby/object:Gem::Requirement
|
|
51
|
+
none: false
|
|
52
|
+
requirements:
|
|
53
|
+
- - ! '>='
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '0'
|
|
56
|
+
type: :runtime
|
|
136
57
|
prerelease: false
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
58
|
+
version_requirements: *70250000244740
|
|
59
|
+
- !ruby/object:Gem::Dependency
|
|
60
|
+
name: multi_xml
|
|
61
|
+
requirement: &70250000244320 !ruby/object:Gem::Requirement
|
|
140
62
|
none: false
|
|
141
|
-
requirements:
|
|
142
|
-
- -
|
|
143
|
-
- !ruby/object:Gem::Version
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
- 0
|
|
147
|
-
version: "0"
|
|
148
|
-
name: rspec
|
|
149
|
-
version_requirements: *id009
|
|
63
|
+
requirements:
|
|
64
|
+
- - ! '>='
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0'
|
|
67
|
+
type: :runtime
|
|
150
68
|
prerelease: false
|
|
69
|
+
version_requirements: *70250000244320
|
|
151
70
|
description: Ruby lib for consuming the Billwise SOAP/XML API
|
|
152
|
-
email:
|
|
71
|
+
email:
|
|
72
|
+
- jason@goecke.net
|
|
73
|
+
- john@krumpt.com
|
|
153
74
|
executables: []
|
|
154
|
-
|
|
155
75
|
extensions: []
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
- LICENSE.txt
|
|
159
|
-
- README.md
|
|
160
|
-
files:
|
|
76
|
+
extra_rdoc_files: []
|
|
77
|
+
files:
|
|
161
78
|
- .document
|
|
79
|
+
- .gitignore
|
|
162
80
|
- Gemfile
|
|
163
81
|
- Gemfile.lock
|
|
164
82
|
- LICENSE.txt
|
|
165
83
|
- README.md
|
|
166
84
|
- Rakefile
|
|
167
|
-
- VERSION
|
|
168
85
|
- billwise4r.gemspec
|
|
169
86
|
- lib/billwise4r.rb
|
|
170
|
-
- lib/billwise4r/
|
|
87
|
+
- lib/billwise4r/version.rb
|
|
171
88
|
- spec/billwise4r_spec.rb
|
|
172
|
-
- spec/config/.gitignore
|
|
173
89
|
- spec/config/config.yml
|
|
174
90
|
- spec/connect_sm_service.wsdl
|
|
175
91
|
- spec/spec_helper.rb
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
licenses:
|
|
179
|
-
- MIT
|
|
92
|
+
homepage: http://github.com/jsgoecke/billwise4r
|
|
93
|
+
licenses: []
|
|
180
94
|
post_install_message:
|
|
181
95
|
rdoc_options: []
|
|
182
|
-
|
|
183
|
-
require_paths:
|
|
96
|
+
require_paths:
|
|
184
97
|
- lib
|
|
185
|
-
|
|
98
|
+
- spec
|
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
100
|
none: false
|
|
187
|
-
requirements:
|
|
188
|
-
- -
|
|
189
|
-
- !ruby/object:Gem::Version
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
- 0
|
|
193
|
-
version: "0"
|
|
194
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
|
+
requirements:
|
|
102
|
+
- - ! '>='
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: '1.9'
|
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
106
|
none: false
|
|
196
|
-
requirements:
|
|
197
|
-
- -
|
|
198
|
-
- !ruby/object:Gem::Version
|
|
199
|
-
|
|
200
|
-
segments:
|
|
201
|
-
- 0
|
|
202
|
-
version: "0"
|
|
107
|
+
requirements:
|
|
108
|
+
- - ! '>='
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
203
111
|
requirements: []
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
rubygems_version: 1.5.0
|
|
112
|
+
rubyforge_project: billwise4r
|
|
113
|
+
rubygems_version: 1.8.6
|
|
207
114
|
signing_key:
|
|
208
115
|
specification_version: 3
|
|
209
116
|
summary: Ruby lib for consuming the Billwise SOAP/XML API
|
|
210
|
-
test_files:
|
|
117
|
+
test_files:
|
|
211
118
|
- spec/billwise4r_spec.rb
|
|
119
|
+
- spec/config/config.yml
|
|
120
|
+
- spec/connect_sm_service.wsdl
|
|
212
121
|
- spec/spec_helper.rb
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.1.1
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
class Billwise
|
|
2
|
-
##
|
|
3
|
-
# Instantiates a new Billwise class
|
|
4
|
-
#
|
|
5
|
-
def initialize(params={})
|
|
6
|
-
# Make sure all params we need are here or raise an error
|
|
7
|
-
check_initialization_params(params)
|
|
8
|
-
|
|
9
|
-
@companyCd = params[:companyCd]
|
|
10
|
-
log = params[:log] || false
|
|
11
|
-
log_level = params[:log_level] || false
|
|
12
|
-
|
|
13
|
-
Savon.configure do |config|
|
|
14
|
-
config.log = log
|
|
15
|
-
config.log_level = log_level
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
@soap_endpoint = URI.parse params[:endpoint] || 'https://cwa021.connect4billing.com/axis2/services/ConnectSmService.ConnectSmServiceHttpSoap12Endpoint/'
|
|
19
|
-
@soap_namespace = params[:namespace] || 'http://connectsm.ws.bwse.com/xsd'
|
|
20
|
-
@soap_version = 2
|
|
21
|
-
|
|
22
|
-
# Build our SOAP driver
|
|
23
|
-
@soap_driver = Savon::Client.new do
|
|
24
|
-
wsse.credentials params[:username] , params[:password]
|
|
25
|
-
wsdl.document = params[:wsdlUrl] || 'https://cwa021.connect4billing.com/axis2/services/ConnectSmService?wsdl'
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
@tag_order = tag_order
|
|
29
|
-
|
|
30
|
-
MultiXml.parser = :nokogiri
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
##
|
|
34
|
-
# A catch all for the methods defined by the WSDL
|
|
35
|
-
# refer to the Billwise API documentation for details
|
|
36
|
-
#
|
|
37
|
-
# @return [Hash] the Billwise response
|
|
38
|
-
def method_missing(method, params)
|
|
39
|
-
response = @soap_driver.request(:xsd, method) do |soap, wsse|
|
|
40
|
-
soap.version = @soap_version
|
|
41
|
-
soap.endpoint = @soap_endpoint
|
|
42
|
-
soap.namespaces["xmlns:xsd"] = @soap_namespace
|
|
43
|
-
|
|
44
|
-
fields = { :companyCd => @companyCd }.merge!(params)
|
|
45
|
-
fields.merge!({ :order! => @tag_order[method] }) if @tag_order[method]
|
|
46
|
-
|
|
47
|
-
soap.body = fields
|
|
48
|
-
end
|
|
49
|
-
response.to_hash["#{method}_response".to_sym][:return]
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
private
|
|
53
|
-
|
|
54
|
-
##
|
|
55
|
-
# Checks that the required params have been provided, or rasies an error
|
|
56
|
-
def check_initialization_params(params={})
|
|
57
|
-
raise ArgumentError, "You must provide Billwise connection parameters." if params.length == 0
|
|
58
|
-
%w(companyCd username password).each { |param| raise ArgumentError, "You must provide a valid #{param}." if params[param.to_sym].nil? }
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
##
|
|
62
|
-
# Traverses the WSDL to create a hash of methods and their ordered parameters
|
|
63
|
-
# only necessary since the Billwise SOAP/XML API requires attributes in order
|
|
64
|
-
# and the Ruby MRI likes to alphabetize, so Savon allows us to set a specific
|
|
65
|
-
# order when building the XML
|
|
66
|
-
#
|
|
67
|
-
# @return [Hash] the methods and their ordered parameters
|
|
68
|
-
def tag_order
|
|
69
|
-
actions = {}
|
|
70
|
-
MultiXml.parse(@soap_driver.wsdl.to_xml)['definitions']['types']['schema'][2]['element'].each do |action|
|
|
71
|
-
attributes = []
|
|
72
|
-
if action['complexType']['sequence']['element'].instance_of?(Hash)
|
|
73
|
-
attributes << action['complexType']['sequence']['element']['name'].to_sym
|
|
74
|
-
else
|
|
75
|
-
action['complexType']['sequence']['element'].each { |item| attributes << item['name'].to_sym }
|
|
76
|
-
end
|
|
77
|
-
actions[decamelize(action['name']).to_sym] = attributes
|
|
78
|
-
end
|
|
79
|
-
actions
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
##
|
|
83
|
-
# Decamelizes a string
|
|
84
|
-
#
|
|
85
|
-
# @param [required, String] the string to be decamelized
|
|
86
|
-
# @return [String] the decamelized string
|
|
87
|
-
def decamelize(string)
|
|
88
|
-
string.gsub(/[A-Z]/) { |p| '_' + p.downcase }
|
|
89
|
-
end
|
|
90
|
-
end
|
data/spec/config/.gitignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
config.yml
|