bambora-client 0.6.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: 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.