dhc 2.1.1 → 2.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.
- checksums.yaml +4 -4
- data/dhc.gemspec +1 -1
- data/lib/dhc/interceptors/caching.rb +2 -2
- data/lib/dhc/logger.rb +30 -0
- data/lib/dhc/version.rb +1 -1
- data/lib/dhc.rb +1 -0
- data/spec/interceptors/caching/multilevel_cache_spec.rb +12 -12
- data/spec/interceptors/throttle/manually_spec.rb +8 -9
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbcbbfbe466771c1ad389aebe29d997915137216b50b0aceff73f3cbc589f050
|
4
|
+
data.tar.gz: a659a0b022d803a700352d20fe96482731470b31234e8db9df3f665da5547ae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1851454238cb9552457a56c020edcb88b8b7e37eed6ebc0c6d1a8574c8250c520cfd48d8ca1e9f82ddcd334085daf1651fb0c31221ea638921aeb5873218846f
|
7
|
+
data.tar.gz: 4432965dcb69081d1d082cfc47101644a817f387d79213f57b8d2b80192901148e49b6a9ceb4ddb10c632e425385b30026de4c2bbbe69ffdaeefb5bf105c6bf5
|
data/dhc.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
|
29
29
|
s.add_development_dependency 'prometheus-client', '~> 0.7.1'
|
30
30
|
s.add_development_dependency 'pry'
|
31
|
-
s.add_development_dependency 'rails', '>= 5.2'
|
31
|
+
s.add_development_dependency 'rails', '>= 5.2', '< 7'
|
32
32
|
s.add_development_dependency 'redis'
|
33
33
|
s.add_development_dependency 'rspec-rails', '>= 3.0.0'
|
34
34
|
s.add_development_dependency 'rubocop'
|
@@ -23,12 +23,12 @@ class DHC::Caching < DHC::Interceptor
|
|
23
23
|
def fetch(key)
|
24
24
|
central_response = @central[:read].fetch(key) if @central && @central[:read].present?
|
25
25
|
if central_response
|
26
|
-
|
26
|
+
DHC::Logger.info %([DHC] served from central cache: "#{key}")
|
27
27
|
return central_response
|
28
28
|
end
|
29
29
|
local_response = @local.fetch(key) if @local
|
30
30
|
if local_response
|
31
|
-
|
31
|
+
DHC::Logger.info %([DHC] served from local cache: "#{key}")
|
32
32
|
return local_response
|
33
33
|
end
|
34
34
|
end
|
data/lib/dhc/logger.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'singleton'
|
4
|
+
require 'forwardable'
|
5
|
+
|
6
|
+
class DHC::Logger < Logger
|
7
|
+
include ActiveSupport::Configurable
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
config_accessor :logger
|
11
|
+
|
12
|
+
class << self
|
13
|
+
extend Forwardable
|
14
|
+
def_delegators :instance, :log, :info, :error, :warn, :debug
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(logdev = nil)
|
18
|
+
super
|
19
|
+
if DHC::Logger.logger
|
20
|
+
self.logger = DHC::Logger.logger
|
21
|
+
elsif defined? Rails
|
22
|
+
self.logger = Rails.logger
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.log(severity, message = nil, progname = nil)
|
27
|
+
return if logger.blank?
|
28
|
+
logger.log(severity, message, progname)
|
29
|
+
end
|
30
|
+
end
|
data/lib/dhc/version.rb
CHANGED
data/lib/dhc.rb
CHANGED
@@ -46,8 +46,8 @@ describe DHC::Caching do
|
|
46
46
|
it 'serves a response from local cache without trying the central cache' do
|
47
47
|
expect(Rails.cache).to receive(:fetch).at_least(:once).and_call_original
|
48
48
|
expect(Rails.cache).to receive(:write).and_call_original
|
49
|
-
expect(
|
50
|
-
|
49
|
+
expect(DHC::Logger).to receive(:info).with(%{[DHC] served from local cache: "DHC_CACHE(v1): GET http://depay.fi"}).and_call_original
|
50
|
+
response_has_been_cached_and_served_from_cache!
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -67,8 +67,8 @@ describe DHC::Caching do
|
|
67
67
|
expect(redis_cache).to receive(:write).and_return(true)
|
68
68
|
expect(Rails.cache).to receive(:fetch).and_call_original
|
69
69
|
expect(Rails.cache).to receive(:write).and_call_original
|
70
|
-
expect(
|
71
|
-
|
70
|
+
expect(DHC::Logger).to receive(:info).with(%{[DHC] served from central cache: "DHC_CACHE(v1): GET http://depay.fi"}).and_call_original
|
71
|
+
response_has_been_cached_and_served_from_cache!
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
@@ -78,8 +78,8 @@ describe DHC::Caching do
|
|
78
78
|
expect(redis_cache).to receive(:write).and_return(true)
|
79
79
|
expect(Rails.cache).to receive(:fetch).at_least(:once).and_call_original
|
80
80
|
expect(Rails.cache).to receive(:write).and_call_original
|
81
|
-
expect(
|
82
|
-
|
81
|
+
expect(DHC::Logger).to receive(:info).with(%{[DHC] served from local cache: "DHC_CACHE(v1): GET http://depay.fi"}).and_call_original
|
82
|
+
response_has_been_cached_and_served_from_cache!
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -97,8 +97,8 @@ describe DHC::Caching do
|
|
97
97
|
expect(redis_cache).not_to receive(:write)
|
98
98
|
expect(Rails.cache).to receive(:fetch).and_call_original
|
99
99
|
expect(Rails.cache).to receive(:write).and_call_original
|
100
|
-
expect(
|
101
|
-
|
100
|
+
expect(DHC::Logger).to receive(:info).with(%{[DHC] served from central cache: "DHC_CACHE(v1): GET http://depay.fi"}).and_call_original
|
101
|
+
response_has_been_cached_and_served_from_cache!
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -115,8 +115,8 @@ describe DHC::Caching do
|
|
115
115
|
expect(redis_cache).to receive(:write).and_return(true)
|
116
116
|
expect(Rails.cache).to receive(:fetch).at_least(:once).and_call_original
|
117
117
|
expect(Rails.cache).to receive(:write).and_call_original
|
118
|
-
expect(
|
119
|
-
|
118
|
+
expect(DHC::Logger).to receive(:info).with(%{[DHC] served from local cache: "DHC_CACHE(v1): GET http://depay.fi"}).and_call_original
|
119
|
+
response_has_been_cached_and_served_from_cache!
|
120
120
|
end
|
121
121
|
end
|
122
122
|
|
@@ -132,8 +132,8 @@ describe DHC::Caching do
|
|
132
132
|
it 'does not inquire the local cache for information neither to write them' do
|
133
133
|
expect(redis_cache).to receive(:fetch).and_return(nil, body: '<h1>Hi there</h1>', code: 200, headers: nil, return_code: nil, mock: :webmock)
|
134
134
|
expect(redis_cache).to receive(:write).and_return(true)
|
135
|
-
expect(
|
136
|
-
|
135
|
+
expect(DHC::Logger).to receive(:info).with(%{[DHC] served from central cache: "DHC_CACHE(v1): GET http://depay.fi"}).and_call_original
|
136
|
+
response_has_been_cached_and_served_from_cache!
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
@@ -81,19 +81,18 @@ describe DHC::Throttle do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
context 'multiple provider' do
|
84
|
-
|
85
84
|
it 'tracks multiple providers without a problem' do
|
86
85
|
DHC.get('http://depay.fi', options)
|
87
86
|
stub_request(:get, 'http://depay.app').to_return(status: 200)
|
88
87
|
DHC.get('http://depay.app', {
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
88
|
+
throttle: {
|
89
|
+
provider: 'depay.app',
|
90
|
+
track: true,
|
91
|
+
limit: quota_limit,
|
92
|
+
expires: 1.minute,
|
93
|
+
break: break_after
|
94
|
+
}
|
95
|
+
})
|
97
96
|
expect(Rails.cache.read('DHC/throttle/tracker/v1')['depay.fi']).to be_present
|
98
97
|
expect(Rails.cache.read('DHC/throttle/tracker/v1')['depay.app']).to be_present
|
99
98
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dhc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/DePayFi/dhc/contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -87,6 +87,9 @@ dependencies:
|
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '5.2'
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '7'
|
90
93
|
type: :development
|
91
94
|
prerelease: false
|
92
95
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -94,6 +97,9 @@ dependencies:
|
|
94
97
|
- - ">="
|
95
98
|
- !ruby/object:Gem::Version
|
96
99
|
version: '5.2'
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '7'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: redis
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -231,6 +237,7 @@ files:
|
|
231
237
|
- lib/dhc/interceptors/rollbar.rb
|
232
238
|
- lib/dhc/interceptors/throttle.rb
|
233
239
|
- lib/dhc/interceptors/zipkin.rb
|
240
|
+
- lib/dhc/logger.rb
|
234
241
|
- lib/dhc/railtie.rb
|
235
242
|
- lib/dhc/request.rb
|
236
243
|
- lib/dhc/response.rb
|