bambora-client 0.6.0 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 125b2595cbfa8ade3c236a3c65e1e47c59cbc7a0b6aece26a9a308f9a16572f6
4
- data.tar.gz: 48c8383401b597a1c8cf644330bfc5f65e48ffc2351225ce1a108c57a03c145a
3
+ metadata.gz: 8f352f6b69779ed40aec8656bac2ef2ab59e3f9f2c449ded71fd2b927521f33b
4
+ data.tar.gz: d156be5c5a47ea734231bde86e1664b21f2f1ee9abdb5334b0c416d3f2139259
5
5
  SHA512:
6
- metadata.gz: 2054c3ae794029eecf7ab9adb32024f3959d8ab56fb2f0c08908ffc27f1786498cc53f3b1a870caeabad4aeca9eff1ea762c0057fd41cef318a2c8574e1440db
7
- data.tar.gz: 9b982a65eed4fa12e2b199a55e659c633fe0c99c3261db752b1f64a66a1275de4c0aafff24e1a59561030c33412066a20c1503dd897e0af04a83d09841563b56
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.7
15
+ - name: Set up Ruby 3.0
16
16
  uses: ruby/setup-ruby@v1
17
17
  with:
18
- ruby-version: 2.7
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.7', '3.0']
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.7
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.7.7
1
+ 3.0.5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
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
+
1
10
  ## 0.6.0 (2023-05-02)
2
11
 
3
12
  - Updating minimum Ruby version to Ruby 2.7.7
@@ -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,20 +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.7.7'
40
+ spec.required_ruby_version = '>= 3.0.5'
41
41
 
42
42
  spec.add_dependency 'faraday', '~> 2.0.1'
43
- spec.add_dependency 'faraday-excon'
44
- spec.add_dependency 'faraday-multipart'
43
+ spec.add_dependency 'faraday-excon', '~> 2.1.0'
44
+ spec.add_dependency 'faraday-multipart', '~> 1.0.0'
45
45
  spec.add_dependency 'gyoku', '~> 1.0'
46
46
  spec.add_dependency 'multiparty', '~> 0'
47
47
 
48
48
  spec.add_development_dependency 'bundler', '~> 2'
49
- spec.add_development_dependency 'pry', '~> 0.12.0'
50
- 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'
51
51
  spec.add_development_dependency 'rake', '~> 13.0'
52
52
  spec.add_development_dependency 'rspec', '~> 3.0'
53
53
  spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
54
- spec.add_development_dependency 'rubocop', '~> 0.74.0'
54
+ spec.add_development_dependency 'rubocop', '~> 1.12.0'
55
55
  spec.add_development_dependency 'webmock', '~> 3.7'
56
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,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.6.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
@@ -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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bambora-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.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: 2023-07-13 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
14
  name: faraday
@@ -28,30 +28,30 @@ dependencies:
28
28
  name: faraday-excon
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '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: '0'
40
+ version: 2.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday-multipart
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 1.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: gyoku
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +100,28 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.12.0
103
+ version: 0.14.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.12.0
110
+ version: 0.14.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: pry-byebug
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.7'
117
+ version: 3.8.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '3.7'
124
+ version: 3.8.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rake
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 0.74.0
173
+ version: 1.12.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 0.74.0
180
+ version: 1.12.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: webmock
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -195,12 +195,12 @@ dependencies:
195
195
  description: The official beanstream-ruby gem is not thread-safe. This thread-safe
196
196
  client works in environments like Sidekiq and Puma.
197
197
  email:
198
- - hello@cassidy.codes
199
198
  - tech@himama.com
200
199
  executables: []
201
200
  extensions: []
202
201
  extra_rdoc_files: []
203
202
  files:
203
+ - ".editorconfig"
204
204
  - ".github/workflows/gempush.yml"
205
205
  - ".github/workflows/linter.yml"
206
206
  - ".github/workflows/ruby.yml"
@@ -232,6 +232,7 @@ files:
232
232
  - lib/bambora/builders/xml_request_body.rb
233
233
  - lib/bambora/client.rb
234
234
  - lib/bambora/client/version.rb
235
+ - lib/bambora/credentials.rb
235
236
  - lib/bambora/factories/response_adapter_factory.rb
236
237
  - lib/bambora/rest/batch_payment_file_upload_client.rb
237
238
  - lib/bambora/rest/client.rb
@@ -257,14 +258,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
257
258
  requirements:
258
259
  - - ">="
259
260
  - !ruby/object:Gem::Version
260
- version: 2.7.7
261
+ version: 3.0.5
261
262
  required_rubygems_version: !ruby/object:Gem::Requirement
262
263
  requirements:
263
264
  - - ">="
264
265
  - !ruby/object:Gem::Version
265
266
  version: '0'
266
267
  requirements: []
267
- rubygems_version: 3.1.6
268
+ rubygems_version: 3.5.3
268
269
  signing_key:
269
270
  specification_version: 4
270
271
  summary: A thread-safe client for the Bambora/Beanstream API.