billwise4r 0.1.1 → 0.2.2

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