starling-ruby 0.1.0 → 0.2.0

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +8 -0
  3. data/.gitignore +1 -0
  4. data/.reek +27 -0
  5. data/.rubocop.yml +6 -4
  6. data/CHANGELOG.md +17 -0
  7. data/Gemfile.lock +37 -2
  8. data/README.md +102 -17
  9. data/bin/console +2 -6
  10. data/lib/starling.rb +40 -7
  11. data/lib/starling/api_service.rb +45 -37
  12. data/lib/starling/client.rb +165 -6
  13. data/lib/starling/errors/api_error.rb +35 -2
  14. data/lib/starling/errors/base_error.rb +6 -24
  15. data/lib/starling/middlewares/raise_starling_errors.rb +11 -10
  16. data/lib/starling/request.rb +17 -19
  17. data/lib/starling/resources/account_balance_resource.rb +14 -6
  18. data/lib/starling/resources/account_resource.rb +10 -0
  19. data/lib/starling/resources/address_resource.rb +26 -0
  20. data/lib/starling/resources/addresses_resource.rb +18 -0
  21. data/lib/starling/resources/base_resource.rb +34 -9
  22. data/lib/starling/resources/card_resource.rb +46 -0
  23. data/lib/starling/resources/contact_account_resource.rb +31 -0
  24. data/lib/starling/resources/contact_resource.rb +16 -0
  25. data/lib/starling/resources/customer_resource.rb +36 -0
  26. data/lib/starling/resources/direct_debit_mandate_resource.rb +43 -0
  27. data/lib/starling/resources/direct_debit_transaction_resource.rb +54 -0
  28. data/lib/starling/resources/inbound_faster_payments_transaction_resource.rb +56 -0
  29. data/lib/starling/resources/mastercard_transaction_resource.rb +73 -0
  30. data/lib/starling/resources/me_resource.rb +26 -0
  31. data/lib/starling/resources/merchant_location_resource.rb +33 -0
  32. data/lib/starling/resources/merchant_resource.rb +34 -0
  33. data/lib/starling/resources/outbound_faster_payments_transaction_resource.rb +56 -0
  34. data/lib/starling/resources/payment_resource.rb +78 -0
  35. data/lib/starling/resources/transaction_resource.rb +42 -0
  36. data/lib/starling/services/account_balance_service.rb +11 -2
  37. data/lib/starling/services/account_service.rb +16 -3
  38. data/lib/starling/services/addresses_service.rb +26 -0
  39. data/lib/starling/services/base_service.rb +22 -1
  40. data/lib/starling/services/card_service.rb +26 -0
  41. data/lib/starling/services/contact_accounts_service.rb +54 -0
  42. data/lib/starling/services/contacts_service.rb +73 -0
  43. data/lib/starling/services/customer_service.rb +25 -0
  44. data/lib/starling/services/direct_debit_mandates_service.rb +61 -0
  45. data/lib/starling/services/direct_debit_transactions_service.rb +46 -0
  46. data/lib/starling/services/inbound_faster_payments_transactions_service.rb +46 -0
  47. data/lib/starling/services/mastercard_transactions_service.rb +30 -0
  48. data/lib/starling/services/me_service.rb +26 -0
  49. data/lib/starling/services/merchant_locations_service.rb +34 -0
  50. data/lib/starling/services/merchants_service.rb +26 -0
  51. data/lib/starling/services/outbound_faster_payments_transactions_service.rb +46 -0
  52. data/lib/starling/services/payments_service.rb +30 -0
  53. data/lib/starling/services/transactions_service.rb +44 -0
  54. data/lib/starling/utils.rb +30 -0
  55. data/lib/starling/version.rb +1 -1
  56. data/starling-ruby.gemspec +2 -0
  57. metadata +63 -2
@@ -0,0 +1,44 @@
1
+ module Starling
2
+ module Services
3
+ # A service for accessing the Transactions API
4
+ class TransactionsService < BaseService
5
+ # @param id [String] The Starling internal ID of the transaction
6
+ # @param params [Hash] Parameters which will be included in the HTTP request,
7
+ # included in the URL as a query string
8
+ # @param headers [Hash] Headers which be included in the HTTP request, merged on
9
+ # top of the headers set at the {Client} level
10
+ # @return [Resources::TransactionResource]
11
+ # @raise [Errors::ApiError] if the HTTP request returns a status indicating that it
12
+ # was unsuccessful
13
+ def get(id, params: {}, headers: {})
14
+ response = api_service.make_request(:get,
15
+ "/transactions/#{id}",
16
+ params: params,
17
+ headers: headers)
18
+ resource.new(response: response)
19
+ end
20
+
21
+ # @param params [Hash] Parameters which will be included in the HTTP request,
22
+ # included in the URL as a query string
23
+ # @param headers [Hash] Headers which be included in the HTTP request, merged on
24
+ # top of the headers set at the {Client} level
25
+ # @return [Array<Resources::TransactionResource>]
26
+ # @raise [Errors::ApiError] if the HTTP request returns a status indicating that it
27
+ # was unsuccessful
28
+ def list(params: {}, headers: {})
29
+ response = api_service.make_request(:get, '/transactions', params: params,
30
+ headers: headers)
31
+
32
+ build_collection_from_embedded_key(response,
33
+ key: 'transactions',
34
+ resource: resource)
35
+ end
36
+
37
+ private
38
+
39
+ def resource
40
+ Resources::TransactionResource
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ module Starling
2
+ # A collection of utility methods used across starling-ruby
3
+ class Utils
4
+ class << self
5
+ # @return [String] The gem's name and version
6
+ def gem_info
7
+ return 'starling-ruby' unless defined?(Starling::VERSION)
8
+ "starling-ruby/v#{Starling::VERSION}"
9
+ end
10
+
11
+ # @return [String] The Ruby engine this code is currently running on
12
+ def ruby_engine
13
+ defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
14
+ end
15
+
16
+ # @return [String] The Ruby version and patchlevel this code is currently running
17
+ # on
18
+ def ruby_version
19
+ return RUBY_VERSION unless defined?(RUBY_PATCHLEVEL)
20
+ RUBY_VERSION + "p#{RUBY_PATCHLEVEL}"
21
+ end
22
+
23
+ # @return [String] The JRuby interpreter version this code is currently running on,
24
+ # or the Ruby version for non-JRuby environments
25
+ def interpreter_version
26
+ defined?(JRUBY_VERSION) ? JRUBY_VERSION : RUBY_VERSION
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Starling
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -30,4 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'pry', '~> 0.10.4'
31
31
  spec.add_development_dependency 'values', '~> 1.8.0'
32
32
  spec.add_development_dependency 'rspec_junit_formatter', '~> 0.2.3'
33
+ spec.add_development_dependency 'yard', '~> 0.8.7.6'
34
+ spec.add_development_dependency 'reek', '~> 4.7.0'
33
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starling-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Rogers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-30 00:00:00.000000000 Z
11
+ date: 2017-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -156,6 +156,34 @@ dependencies:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
158
  version: 0.2.3
159
+ - !ruby/object:Gem::Dependency
160
+ name: yard
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: 0.8.7.6
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 0.8.7.6
173
+ - !ruby/object:Gem::Dependency
174
+ name: reek
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: 4.7.0
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 4.7.0
159
187
  description:
160
188
  email:
161
189
  - tim@gocardless.com
@@ -165,6 +193,7 @@ extra_rdoc_files: []
165
193
  files:
166
194
  - ".circleci/config.yml"
167
195
  - ".gitignore"
196
+ - ".reek"
168
197
  - ".rspec"
169
198
  - ".rubocop.yml"
170
199
  - CHANGELOG.md
@@ -185,10 +214,42 @@ files:
185
214
  - lib/starling/request.rb
186
215
  - lib/starling/resources/account_balance_resource.rb
187
216
  - lib/starling/resources/account_resource.rb
217
+ - lib/starling/resources/address_resource.rb
218
+ - lib/starling/resources/addresses_resource.rb
188
219
  - lib/starling/resources/base_resource.rb
220
+ - lib/starling/resources/card_resource.rb
221
+ - lib/starling/resources/contact_account_resource.rb
222
+ - lib/starling/resources/contact_resource.rb
223
+ - lib/starling/resources/customer_resource.rb
224
+ - lib/starling/resources/direct_debit_mandate_resource.rb
225
+ - lib/starling/resources/direct_debit_transaction_resource.rb
226
+ - lib/starling/resources/inbound_faster_payments_transaction_resource.rb
227
+ - lib/starling/resources/mastercard_transaction_resource.rb
228
+ - lib/starling/resources/me_resource.rb
229
+ - lib/starling/resources/merchant_location_resource.rb
230
+ - lib/starling/resources/merchant_resource.rb
231
+ - lib/starling/resources/outbound_faster_payments_transaction_resource.rb
232
+ - lib/starling/resources/payment_resource.rb
233
+ - lib/starling/resources/transaction_resource.rb
189
234
  - lib/starling/services/account_balance_service.rb
190
235
  - lib/starling/services/account_service.rb
236
+ - lib/starling/services/addresses_service.rb
191
237
  - lib/starling/services/base_service.rb
238
+ - lib/starling/services/card_service.rb
239
+ - lib/starling/services/contact_accounts_service.rb
240
+ - lib/starling/services/contacts_service.rb
241
+ - lib/starling/services/customer_service.rb
242
+ - lib/starling/services/direct_debit_mandates_service.rb
243
+ - lib/starling/services/direct_debit_transactions_service.rb
244
+ - lib/starling/services/inbound_faster_payments_transactions_service.rb
245
+ - lib/starling/services/mastercard_transactions_service.rb
246
+ - lib/starling/services/me_service.rb
247
+ - lib/starling/services/merchant_locations_service.rb
248
+ - lib/starling/services/merchants_service.rb
249
+ - lib/starling/services/outbound_faster_payments_transactions_service.rb
250
+ - lib/starling/services/payments_service.rb
251
+ - lib/starling/services/transactions_service.rb
252
+ - lib/starling/utils.rb
192
253
  - lib/starling/version.rb
193
254
  - starling-ruby.gemspec
194
255
  homepage: https://github.com/timrogers/starling-ruby