active_record_api-request 0.3.14 → 0.3.18
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bf85446f65a2cdec067be322385b94966bdf4f6cb457fe7914a118e563b2a9e
|
4
|
+
data.tar.gz: 10b170ac1aeed7d5b95cb87fef0bba7e3975715413395cb2578d8222941f70aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b83ec91607f9c2e6d0df1319f0cb0aeb9e0d1e0d740655c8660e9ac57c77f29e62f887bb4e5ca4066600fae71191f904260d83812889ca12dd09492d7e408b1
|
7
|
+
data.tar.gz: 3ef8d895de630379c8e35afbc3a0d8bdeefd3318854ab97ff1cc524bef7270dec0661029829f375813be43393462daacfd34c7c91d24d6a5ebe0d438c5b54cc9
|
@@ -5,7 +5,7 @@ require 'faraday-http-cache'
|
|
5
5
|
module ActiveRecordApi
|
6
6
|
module Request
|
7
7
|
class Connection < Credentials
|
8
|
-
attr_accessor :debug, :path, :cache_store
|
8
|
+
attr_accessor :debug, :path, :cache_store, :timeout
|
9
9
|
attr_writer :full_url
|
10
10
|
|
11
11
|
def authenticated_connection
|
@@ -16,7 +16,7 @@ module ActiveRecordApi
|
|
16
16
|
def connection
|
17
17
|
@connection ||= Faraday.new do |builder|
|
18
18
|
builder.options[:open_timeout] = 2
|
19
|
-
builder.options[:timeout] = 5
|
19
|
+
builder.options[:timeout] = timeout || 5
|
20
20
|
builder.request :json
|
21
21
|
builder.request :url_encoded
|
22
22
|
builder.request :retry, max: 5, interval: 0.05, interval_randomness: 0.5, backoff_factor: 2, exceptions: [ActiveRecordApi::Request::AuthError]
|
@@ -24,7 +24,7 @@ module ActiveRecordApi
|
|
24
24
|
builder.use :http_cache, http_cache_options
|
25
25
|
builder.use FaradayFollowNextLinks, 5
|
26
26
|
builder.use FaradayMiddleware::FollowRedirects, standards_compliant: true
|
27
|
-
builder.use FaradayAuthTokenRetry, credentials: credentials, host: host, token_path: token_path, debug: debug
|
27
|
+
builder.use FaradayAuthTokenRetry, credentials: credentials, host: host, token_path: token_path, debug: debug, timeout: timeout
|
28
28
|
builder.response :json, content_type: /\bjson$/
|
29
29
|
builder.response :raise_error
|
30
30
|
builder.response :logger if debug
|
@@ -6,14 +6,15 @@ module ActiveRecordApi
|
|
6
6
|
class FaradayAuthTokenRetry < Faraday::Middleware
|
7
7
|
AUTH_KEY = 'Authorization'.freeze
|
8
8
|
|
9
|
-
attr_reader :credentials, :host, :token_path, :debug
|
9
|
+
attr_reader :credentials, :host, :token_path, :debug, :timeout
|
10
10
|
|
11
|
-
def initialize(app, credentials: nil, host: nil, token_path: nil, debug: false)
|
11
|
+
def initialize(app, credentials: nil, host: nil, token_path: nil, debug: false, timeout: nil)
|
12
12
|
super(app)
|
13
13
|
@credentials = credentials
|
14
14
|
@host = host
|
15
15
|
@token_path = token_path
|
16
16
|
@debug = debug
|
17
|
+
@timeout = nil
|
17
18
|
end
|
18
19
|
|
19
20
|
def call(env)
|
@@ -42,7 +43,7 @@ module ActiveRecordApi
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def retrieve_token
|
45
|
-
token_cache.fetch_token Proc.new { TokenRetriever.new(credentials: credentials, host: host, token_path: token_path, debug: debug).fetch_token }
|
46
|
+
token_cache.fetch_token Proc.new { TokenRetriever.new(credentials: credentials, host: host, token_path: token_path, debug: debug, timeout: timeout).fetch_token }
|
46
47
|
end
|
47
48
|
|
48
49
|
def token_cache
|
@@ -3,7 +3,7 @@ module ActiveRecordApi
|
|
3
3
|
module Request
|
4
4
|
class TokenCache
|
5
5
|
include ActiveAttr::Model
|
6
|
-
attr_accessor
|
6
|
+
attr_accessor :debug
|
7
7
|
|
8
8
|
def flush
|
9
9
|
return unless defined? AUTH_REDIS_POOL
|
@@ -33,14 +33,14 @@ module ActiveRecordApi
|
|
33
33
|
@token = nil
|
34
34
|
@retry = 0
|
35
35
|
while @token.nil? && @retry < 5
|
36
|
-
@retry += 1
|
37
36
|
@token = @redis_client.get('auth_token')
|
38
37
|
debug_log "retry ##{@retry}"
|
39
38
|
debug_log "found token: #{@token}"
|
39
|
+
@retry += 1
|
40
40
|
if @token.nil? || session_missing_for?(@token)
|
41
41
|
if acquire_lock
|
42
42
|
begin
|
43
|
-
debug_log
|
43
|
+
debug_log 'acquired lock and fetching token for cache'
|
44
44
|
@token = token_proc.call
|
45
45
|
raise "no token returned! #{@token}" if @token.nil?
|
46
46
|
@redis_client.set 'auth_token', @token
|
@@ -70,7 +70,7 @@ module ActiveRecordApi
|
|
70
70
|
return nil
|
71
71
|
end
|
72
72
|
|
73
|
-
@redis_session ||= Redis.new({url: "redis://#{ENV['REDIS_SESSION_HOST']}", db: ENV['REDIS_SESSION']})
|
73
|
+
@redis_session ||= Redis.new({ url: "redis://#{ENV['REDIS_SESSION_HOST']}", db: ENV['REDIS_SESSION'] })
|
74
74
|
end
|
75
75
|
|
76
76
|
def session_missing_for?(token)
|
@@ -86,7 +86,7 @@ module ActiveRecordApi
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def acquire_lock
|
89
|
-
@redis_client.set 'auth_token_lock', unique_key, nx: true, ex:
|
89
|
+
@redis_client.set 'auth_token_lock', unique_key, nx: true, ex: 8
|
90
90
|
current_lock_value = @redis_client.get 'auth_token_lock'
|
91
91
|
debug_log "#{current_lock_value} == #{unique_key}"
|
92
92
|
current_lock_value == unique_key
|
@@ -102,4 +102,5 @@ module ActiveRecordApi
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
105
|
+
|
105
106
|
#:nocov:#
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_api-request
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Full Measure Education
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_attr
|