bckbn 0.2.0 → 1.0.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: 18497553fb0efdfc5eabb1f3893f41cfd6d5bcb32e5d6f8b5fe0f29552ba1807
4
- data.tar.gz: 6850ef4da956af91bb09b0208bf4023689e9ac4a88c493c460f2468d17446565
3
+ metadata.gz: ce377473db9fe443d1c56a5fddee4a3a0c054f7116ddec01c72a557a42444fc5
4
+ data.tar.gz: 658740e19e499bb366b79c35be52dc679248c03bd07b752062b29be8b8ca4ca4
5
5
  SHA512:
6
- metadata.gz: 657681ad26592ebdc309d65410843b6e0301140157a08a60da6a853850d917bf1f38222fe4ddd0b33841d3e3f9372b46e902e6cca9a3c02e8700cfdcb33c41a2
7
- data.tar.gz: c989abe10cccc89833d898c5fa9e01e687071b9d43169034e0918b72cf172c78723a8788c642b51c3d0fe49e257b6b40ad9ca07e7e4d031c9be0c2a214ccba1e
6
+ metadata.gz: 737a5f3f12a45a1324bf5da6808db9675dae182ec2c18161679711c94b32597aa3d6a978b38cc3244d89a6dd0fffd3187d069e916dff56dc419b930b8b18a121
7
+ data.tar.gz: 1ffaf775d1abb53073328e3b11118bfba10bc5fa3065cbdb40cf00efb24cecec6cf90c806852c34307857a02664a8bd1c5129e109e92ba4726c7bc0d18d8b9cb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
- ## [Unreleased]
1
+ ## 0.2.0
2
2
 
3
- ## [0.1.0] - 2023-08-18
3
+ - Add support for `debug` and `error` log levels
4
4
 
5
- - Initial release
5
+ ## 1.0.0
6
+
7
+ - Update local config to override global config where both present
8
+ - Add idempotency key header
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bckbn (0.2.0)
4
+ bckbn (1.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -9,6 +9,7 @@ module Bckbn
9
9
  log_level
10
10
  merchant_id
11
11
  source_ip_address
12
+ idempotency_key
12
13
  ].freeze
13
14
 
14
15
  Configuration = Struct.new(*CONFIG_OPTIONS, keyword_init: true) do
@@ -23,26 +23,22 @@ module Bckbn
23
23
  Net::HTTPServiceUnavailable => HttpServiceUnavailable
24
24
  }.freeze
25
25
 
26
- def initialize(config)
27
- @config = config.empty? ? Bckbn.config : Bckbn::Configuration.new(**config)
26
+ def initialize(per_req_config)
27
+ global_config = Bckbn.config.to_h
28
+ config = global_config.merge(per_req_config)
29
+
30
+ @config = Bckbn::Configuration.new(**config)
28
31
  @logs = []
29
32
  end
30
33
 
31
34
  def post_to_api(path, body, klass)
32
35
  log(:debug, "POST #{path}\n\nData: #{body.to_json}")
33
36
 
34
- headers = {
35
- "Content-Type" => "application/json",
36
- "Authorization" => "Bearer #{config.access_token}",
37
- "X-Api-Version" => config.api_version,
38
- "X-Merchant-Id" => config.merchant_id,
39
- "X-Source-Ip-Address" => config.source_ip_address
40
- }
41
-
42
37
  url = URI.parse(config.api_base + path)
43
38
  request = Net::HTTP::Post.new(url.path)
44
- headers.reject! { |_, v| v.nil? || v == "" }
45
- headers.each { |k, v| request[k] = v }
39
+ bckbn_headers = headers(config)
40
+ bckbn_headers.reject! { |_, v| v.nil? || v == "" }
41
+ bckbn_headers.each { |k, v| request[k] = v }
46
42
  request.body = body.to_json
47
43
 
48
44
  response_handler(url, request) do |response, rbody|
@@ -86,6 +82,17 @@ module Bckbn
86
82
  end
87
83
  end
88
84
 
85
+ def headers(config)
86
+ {
87
+ "Content-Type" => "application/json",
88
+ "Authorization" => "Bearer #{config.access_token}",
89
+ "X-Api-Version" => config.api_version,
90
+ "X-Merchant-Id" => config.merchant_id,
91
+ "X-Source-Ip-Address" => config.source_ip_address,
92
+ "X-Idempotency-Key" => config.idempotency_key
93
+ }
94
+ end
95
+
89
96
  def log(level, message)
90
97
  return if LOG_LEVEL_RANKING[config.log_level] > LOG_LEVEL_RANKING[level]
91
98
 
data/lib/bckbn/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bckbn
4
- VERSION = "0.2.0"
4
+ VERSION = "1.0.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bckbn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nikkypx
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-05 00:00:00.000000000 Z
11
+ date: 2023-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker