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/spec/spec_helper.rb CHANGED
@@ -7,5 +7,5 @@ require 'fakeweb'
7
7
  require 'awesome_print'
8
8
 
9
9
  RSpec.configure do |config|
10
-
10
+
11
11
  end
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
- hash: 25
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
- date: 2011-06-07 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
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
- hash: 3
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
- - !ruby/object:Gem::Dependency
64
- type: :development
65
- requirement: &id004 !ruby/object:Gem::Requirement
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
- hash: 23
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
- - !ruby/object:Gem::Dependency
96
- type: :development
97
- requirement: &id006 !ruby/object:Gem::Requirement
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
- hash: 3
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
- - !ruby/object:Gem::Dependency
124
- type: :runtime
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
- version_requirements: *id008
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
- - !ruby/object:Gem::Dependency
138
- type: :development
139
- requirement: &id009 !ruby/object:Gem::Requirement
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
- hash: 3
145
- segments:
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: jason@goecke.net
71
+ email:
72
+ - jason@goecke.net
73
+ - john@krumpt.com
153
74
  executables: []
154
-
155
75
  extensions: []
156
-
157
- extra_rdoc_files:
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/billwise4r.rb
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
- has_rdoc: true
177
- homepage: http://github.com/tropo/billwise4r
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
- required_ruby_version: !ruby/object:Gem::Requirement
98
+ - spec
99
+ required_ruby_version: !ruby/object:Gem::Requirement
186
100
  none: false
187
- requirements:
188
- - - ">="
189
- - !ruby/object:Gem::Version
190
- hash: 3
191
- segments:
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
- hash: 3
200
- segments:
201
- - 0
202
- version: "0"
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
203
111
  requirements: []
204
-
205
- rubyforge_project:
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
@@ -1 +0,0 @@
1
- config.yml