bambora-client 0.4.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cfbb5f16d08f5d325effaf6e1f63c6b685f994d24205a8dccf7bcc53da3d2cbd
4
- data.tar.gz: 8c29fc34d18356b8f0890a65976e0351ba2686d64181464729753087d85bd892
3
+ metadata.gz: 8f352f6b69779ed40aec8656bac2ef2ab59e3f9f2c449ded71fd2b927521f33b
4
+ data.tar.gz: d156be5c5a47ea734231bde86e1664b21f2f1ee9abdb5334b0c416d3f2139259
5
5
  SHA512:
6
- metadata.gz: 7fd38771757b08b4c5effbbf9c43b3dbdc894478b76f3c8f896d2e4b6152a28045eb32d9641218d33add77ba29d4be81c38bf381c64d088c33cd69c96c9f990b
7
- data.tar.gz: cd04925aa02ec74f09ac4e50b13ba718b8a5ad1d746914b96c8a18d276985233e8ab791361927eeb4e9eeac9fe89ed9bb624b5a7ca0bfcced090392c072dfaef
6
+ metadata.gz: f683ea503ba51055b1526f97f893d83a87f75f336b4deedd09b779a6b739194a31cc8d280c66cf0be4576a356ddf9e48263bc42fdae52ee684452015a931f7ef
7
+ data.tar.gz: 3700fddc9d722bbbe240f3df94d2aab8ffd7f6a800fa62245993e04c45207d48f32370224cd3d9c7ebd664ed5c0da8d5b57af4d76a06cef992e2767c49018c01
data/.editorconfig ADDED
@@ -0,0 +1,10 @@
1
+ # top-most EditorConfig file
2
+ root = true
3
+
4
+ # Unix-style newlines with a newline ending every file
5
+ # Indent with 2 spaces
6
+ [*]
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+ indent_style = space
10
+ indent_size = 2
@@ -12,10 +12,10 @@ jobs:
12
12
 
13
13
  steps:
14
14
  - uses: actions/checkout@v2
15
- - name: Set up Ruby 2.6
15
+ - name: Set up Ruby 3.0
16
16
  uses: ruby/setup-ruby@v1
17
17
  with:
18
- ruby-version: 2.6
18
+ ruby-version: 3.0
19
19
 
20
20
  - name: Publish to RubyGems
21
21
  run: |
@@ -18,9 +18,7 @@ jobs:
18
18
  ${{ runner.os }}-gem-
19
19
  - name: Setup ruby
20
20
  uses: ruby/setup-ruby@v1
21
- - run: |
22
- gem install bundler
23
- bundle config path vendor/bundle
24
- bundle install --jobs 4 --retry 3
21
+ - name: Install dependencies
22
+ run: bundle install
25
23
  - name: Rubocop checks
26
24
  run: bundle exec rubocop
@@ -8,7 +8,7 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
  strategy:
10
10
  matrix:
11
- ruby: ['2.4', '2.5', '2.6']
11
+ ruby: ['3.0', '3.1', '3.2', '3.3']
12
12
  name: Ruby ${{ matrix.ruby }} Test
13
13
  steps:
14
14
  - uses: actions/checkout@master
@@ -25,10 +25,8 @@ jobs:
25
25
  uses: ruby/setup-ruby@v1
26
26
  with:
27
27
  ruby-version: ${{ matrix.ruby }}
28
- - run: |
29
- gem install bundler
30
- bundle config path vendor/bundle
31
- bundle install --jobs 4 --retry 3
28
+ - name: Install dependencies
29
+ run: bundle install
32
30
  - name: Run Tests
33
31
  run: |
34
32
  bundle exec rake spec
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.4
2
+ TargetRubyVersion: 3.0
3
3
 
4
4
  Metrics/ClassLength:
5
5
  Enabled: false
@@ -103,3 +103,6 @@ Security/YAMLLoad:
103
103
 
104
104
  Style/RegexpLiteral:
105
105
  Enabled: false
106
+
107
+ Naming/VariableNumber:
108
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.7
1
+ 3.0.5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## 0.7.0 (2024-02-06)
2
+
3
+ - Drop support for Ruby 2
4
+ - Updating minimum Ruby version to Ruby 3.0.5
5
+ - Add test support for Ruby 3.1, 3.2, 3.3
6
+ - Updated Rubocop to enforce 3.0.x conventions
7
+ - Linting fixes
8
+ - Update `BatchReportResource#batch_report_body` to allow `sub merchant id` to be received from `Bambora::Client` or `elements`
9
+
10
+ ## 0.6.0 (2023-05-02)
11
+
12
+ - Updating minimum Ruby version to Ruby 2.7.7
13
+ - Add test support for Ruby 3.0
14
+ - Update Faraday to 2.0.1
15
+
16
+ ## 0.5.0 (2023-01-04)
17
+
18
+ - Updating minimum Ruby version to Ruby 2.6.6
19
+
1
20
  ## 0.4.0 (2021-05-31)
2
21
 
3
22
  - Add `Bambora::V1::PaymentResource#get` method
@@ -6,8 +6,8 @@ require 'bambora/client/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'bambora-client'
8
8
  spec.version = Bambora::Client::VERSION
9
- spec.authors = ['Cassidy K']
10
- spec.email = ['hello@cassidy.codes', 'tech@himama.com']
9
+ spec.authors = ['HiMama']
10
+ spec.email = ['tech@himama.com']
11
11
 
12
12
  spec.summary = 'A thread-safe client for the Bambora/Beanstream API.'
13
13
  spec.description = 'The official beanstream-ruby gem is not thread-safe. This thread-safe client works in '\
@@ -37,19 +37,20 @@ Gem::Specification.new do |spec|
37
37
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
38
38
  spec.require_paths = ['lib']
39
39
 
40
- spec.required_ruby_version = '>= 2.4.6'
40
+ spec.required_ruby_version = '>= 3.0.5'
41
41
 
42
- spec.add_dependency 'excon', '< 1.0'
43
- spec.add_dependency 'faraday', '< 1.0'
42
+ spec.add_dependency 'faraday', '~> 2.0.1'
43
+ spec.add_dependency 'faraday-excon', '~> 2.1.0'
44
+ spec.add_dependency 'faraday-multipart', '~> 1.0.0'
44
45
  spec.add_dependency 'gyoku', '~> 1.0'
45
46
  spec.add_dependency 'multiparty', '~> 0'
46
47
 
47
48
  spec.add_development_dependency 'bundler', '~> 2'
48
- spec.add_development_dependency 'pry', '~> 0.12.0'
49
- spec.add_development_dependency 'pry-byebug', '~> 3.7'
49
+ spec.add_development_dependency 'pry', '~> 0.14.0'
50
+ spec.add_development_dependency 'pry-byebug', '~> 3.8.0'
50
51
  spec.add_development_dependency 'rake', '~> 13.0'
51
52
  spec.add_development_dependency 'rspec', '~> 3.0'
52
53
  spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
53
- spec.add_development_dependency 'rubocop', '~> 0.74.0'
54
+ spec.add_development_dependency 'rubocop', '~> 1.12.0'
54
55
  spec.add_development_dependency 'webmock', '~> 3.7'
55
56
  end
@@ -8,7 +8,7 @@ module Bambora
8
8
  parsed_response = super
9
9
  return error_response if parsed_response.values.flatten.empty? # We didn't get a query string back.
10
10
 
11
- parsed_response.each_with_object({}) { |(key, val), obj| obj[key] = val.length == 1 ? val.first : val }
11
+ parsed_response.transform_values { |val| val.length == 1 ? val.first : val }
12
12
  end
13
13
 
14
14
  private
@@ -13,7 +13,7 @@ module Bambora
13
13
  end
14
14
 
15
15
  def to_h
16
- deep_transform_keys_in_object(parser.parse(response.body), &:to_sym)
16
+ deep_transform_keys_in_object(parser.parse(response.body.to_s), &:to_sym)
17
17
  rescue JSON::ParserError
18
18
  error_response
19
19
  end
@@ -33,8 +33,14 @@ module Bambora
33
33
  end
34
34
  end
35
35
 
36
+ # Faraday 1.0 fixed a bug where request/response bodies were indistinguishable.
37
+ # Our tests rely on this behaviour, and perhaps upstream clients do too.
38
+ # @SEE https://github.com/lostisland/faraday/pull/847
36
39
  def error_response
37
- { status: response.status, body: response.body }
40
+ {
41
+ status: response.status,
42
+ body: response.body || response.env.request_body,
43
+ }
38
44
  end
39
45
 
40
46
  def parser
@@ -13,8 +13,8 @@ module Bambora
13
13
  end
14
14
 
15
15
  def to_h
16
- parsed_query_string.each_with_object({}) do |(key, val), obj|
17
- obj[transform(key)] = val
16
+ parsed_query_string.transform_keys do |key|
17
+ transform(key)
18
18
  end
19
19
  end
20
20
 
@@ -56,16 +56,14 @@ module Bambora
56
56
  response = client.post(path: sub_path, body: batch_report_body(report_data))
57
57
 
58
58
  response = ensure_record_key_exists(response)
59
- response = add_messages_to_response(response)
60
-
61
- response
59
+ add_messages_to_response(response)
62
60
  end
63
61
 
64
62
  private
65
63
 
66
64
  def ensure_record_key_exists(response)
67
65
  # bambora can return null or empty record results, fill it in for consistency
68
- response.dig(:response)[:record] = [] if response.dig(:response, :record).nil?
66
+ response[:response][:record] = [] if response.dig(:response, :record).nil?
69
67
 
70
68
  response
71
69
  end
@@ -83,7 +81,7 @@ module Bambora
83
81
  merchant_id: client.merchant_id,
84
82
  pass_code: api_key,
85
83
  sub_merchant_id: client.sub_merchant_id,
86
- )
84
+ ).compact
87
85
  end
88
86
  end
89
87
  end
@@ -16,8 +16,8 @@ module Bambora
16
16
  #
17
17
  # @params params [Hash]
18
18
  def build(params)
19
- params.each_with_object({}) do |(key, value), obj|
20
- obj[transform_key(key)] = value
19
+ params.transform_keys do |key|
20
+ transform_key(key)
21
21
  end
22
22
  end
23
23
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Bambora
4
4
  class Client
5
- VERSION = '0.4.0'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
@@ -12,6 +12,7 @@ require 'gyoku' # XML Builder
12
12
  require 'multiparty' # Multipart/mixed requests
13
13
 
14
14
  require 'bambora/client/version'
15
+ require 'bambora/credentials'
15
16
 
16
17
  # Adapters
17
18
  require 'bambora/adapters/response'
@@ -163,7 +164,7 @@ module Bambora
163
164
  #
164
165
  # @param api_key [String] API key for the bank profiles endpoint.
165
166
  #
166
- # @return [Bambora::Bank::PaymentProfileResource]
167
+ # @return [Bambora::Bank::BatchReportResource]
167
168
  def batch_reports(api_key:)
168
169
  @batch_reports = Bambora::Bank::BatchReportResource.new(
169
170
  client: xml_client,
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bambora
4
+ class Credentials
5
+ attr_reader :merchant_id, :reporting_passcode
6
+
7
+ def initialize(options = {})
8
+ @merchant_id = options[:merchant_id]
9
+ @reporting_passcode = options[:reporting_passcode]
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'faraday/multipart'
4
+ require 'faraday/excon'
5
+
3
6
  module Bambora
4
7
  module Rest
5
8
  ##
@@ -30,7 +30,7 @@ module Bambora
30
30
  # @param api_key [String] Indicating the API Key to be used with the request.
31
31
  #
32
32
  # @return [Hash] Indicating success or failure of the operation.
33
- def get(path:, params: nil, api_key:)
33
+ def get(path:, api_key:, params: nil)
34
34
  parse_response_body(
35
35
  super(path: path, params: params, headers: build_headers(api_key: api_key)),
36
36
  ).to_h
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bambora-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
- - Cassidy K
7
+ - HiMama
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-31 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: excon
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "<"
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: 2.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "<"
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: 2.0.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: faraday
28
+ name: faraday-excon
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "<"
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: 2.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "<"
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
40
+ version: 2.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday-multipart
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: gyoku
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +100,28 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.12.0
103
+ version: 0.14.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.12.0
110
+ version: 0.14.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: pry-byebug
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '3.7'
117
+ version: 3.8.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '3.7'
124
+ version: 3.8.0
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +170,14 @@ dependencies:
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: 0.74.0
173
+ version: 1.12.0
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: 0.74.0
180
+ version: 1.12.0
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: webmock
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -181,12 +195,12 @@ dependencies:
181
195
  description: The official beanstream-ruby gem is not thread-safe. This thread-safe
182
196
  client works in environments like Sidekiq and Puma.
183
197
  email:
184
- - hello@cassidy.codes
185
198
  - tech@himama.com
186
199
  executables: []
187
200
  extensions: []
188
201
  extra_rdoc_files: []
189
202
  files:
203
+ - ".editorconfig"
190
204
  - ".github/workflows/gempush.yml"
191
205
  - ".github/workflows/linter.yml"
192
206
  - ".github/workflows/ruby.yml"
@@ -218,6 +232,7 @@ files:
218
232
  - lib/bambora/builders/xml_request_body.rb
219
233
  - lib/bambora/client.rb
220
234
  - lib/bambora/client/version.rb
235
+ - lib/bambora/credentials.rb
221
236
  - lib/bambora/factories/response_adapter_factory.rb
222
237
  - lib/bambora/rest/batch_payment_file_upload_client.rb
223
238
  - lib/bambora/rest/client.rb
@@ -243,14 +258,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
243
258
  requirements:
244
259
  - - ">="
245
260
  - !ruby/object:Gem::Version
246
- version: 2.4.6
261
+ version: 3.0.5
247
262
  required_rubygems_version: !ruby/object:Gem::Requirement
248
263
  requirements:
249
264
  - - ">="
250
265
  - !ruby/object:Gem::Version
251
266
  version: '0'
252
267
  requirements: []
253
- rubygems_version: 3.0.3.1
268
+ rubygems_version: 3.5.3
254
269
  signing_key:
255
270
  specification_version: 4
256
271
  summary: A thread-safe client for the Bambora/Beanstream API.