active_record_api-request 0.3.15 → 0.3.19

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: 07723fe8a0e7ef8a09d646992c72e93f334473b2f90a86e74af704beb1e8b054
4
- data.tar.gz: a6a7af0c05535d34ee363e455b3f3162d27a9f8c9990e8e4349cded201e7335b
3
+ metadata.gz: d6af4134939034714b4b254d0ad382ac6dd421ce005d710dc6304d5972c4dba9
4
+ data.tar.gz: 1ff9df91defe7292c1f7fe6c8d3ab46bf2a154808bd8b99754b85a99827aee87
5
5
  SHA512:
6
- metadata.gz: 35c489d8cb6613b5b933b7a1cfdd258085a490d8cc76ad9efb908db450d27409566af8c05d5b83eabb0ddc07a57fd1c99ec9102c7b1a880979b50f6979b198b6
7
- data.tar.gz: 4b4ad95507d5af98fc3a0061e3f97807d84f873c3de8e4d4bd6f35708fedbb5295e6a5f4295eda01e220d50c6df6957fcba86e628b747c23b41be81980b7c69d
6
+ metadata.gz: f846a71d5626dc282e221d6dc0cf38300376980f5d2849269485d31e4af5833522fba7a5a2b91dac8ffe67418e887623d7c7480e3c18a30699292cea3bc9c6be
7
+ data.tar.gz: 947ed413c5e927c4ac6889a5d34500c8dfe09b7ebeab347bb67fb3a665a58c2d20690070e9f0cc57f51cd93254f5842a2dd84ae7180e83ed367fd159aaa9d0d5
@@ -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 = timeout
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 :debug
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 "acquired lock and fetching token for cache"
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: 60
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:#
@@ -1,5 +1,5 @@
1
1
  module ActiveRecordApi
2
2
  module Request
3
- VERSION = '0.3.15'.freeze
3
+ VERSION = '0.3.19'.freeze
4
4
  end
5
5
  end
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.15
4
+ version: 0.3.19
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: 2020-06-08 00:00:00.000000000 Z
11
+ date: 2022-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_attr