restful_resource 2.5.1 → 2.5.2

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: d1f405ccf5d3f49ac11166ce73e0268fc4203203a63b3e31999d9f2cfbc416bc
4
- data.tar.gz: 6d07fc35aad7fcf4ee6d2a0236476bd30ac68bbea0cc252a85e5b6d79ad216b8
3
+ metadata.gz: cb0d551d284814e63b1abe31b03f349ad6c75a8b39249a5c34f9d329c2853941
4
+ data.tar.gz: 9c840127de8523bbbda9e2040ae321d7d8211e5cb2c65ed8d0c9bbaed764e54b
5
5
  SHA512:
6
- metadata.gz: ff4a2dea42bcc6bdcd56f539757dad0b3c4ab185d4bf73be11d098176b7af030f4cce005addf6d5e9d6f907605de0406f81b53645110549ee67395b56bacc2f9
7
- data.tar.gz: 75decbc1a7c0058bc7476efbf05981a6bee4771663e285734b3c587a41c4b61b26f87960717216d0a28ff5e1bcade60e7f025232dc577cb9a273d13844852d5e
6
+ metadata.gz: 87673da4a908520471c159f872cff232c9ed120421ba1ac8c6cb8307d8a3f1c7782881791b8a2c27afc1cc4e286f29fd1f60fbfbb108c394e6ef963b903b1ae2
7
+ data.tar.gz: 0ee761effc856af7cbfe4605c277e3df5f6c589c58e07f172effc4128c7d557f55200a1355b56a20ac223d18c3d48094481fbb94a35205b6ee20d0cc0d71e22b
@@ -9,6 +9,8 @@ module RestfulResource
9
9
  logger: nil,
10
10
  cache_store: nil,
11
11
  instrumentation: {},
12
+ timeout: nil,
13
+ open_timeout: nil,
12
14
  faraday_config: nil,
13
15
  faraday_options: nil)
14
16
 
@@ -19,6 +21,8 @@ module RestfulResource
19
21
  auth_token: auth_token,
20
22
  logger: logger,
21
23
  cache_store: cache_store,
24
+ timeout: timeout,
25
+ open_timeout: open_timeout,
22
26
  instrumentation: instrumentation,
23
27
  faraday_config: faraday_config,
24
28
  faraday_options: faraday_options
@@ -69,6 +69,9 @@ module RestfulResource
69
69
  end
70
70
  end
71
71
 
72
+ DEFAULT_TIMEOUT_IN_SECS = 10
73
+ DEFAULT_OPEN_TIMEOUT_IN_SECS = 2
74
+
72
75
  def initialize(username: nil,
73
76
  password: nil,
74
77
  auth_token: nil,
@@ -76,8 +79,8 @@ module RestfulResource
76
79
  cache_store: nil,
77
80
  connection: nil,
78
81
  instrumentation: {},
79
- open_timeout: 2,
80
- timeout: 10,
82
+ timeout: nil,
83
+ open_timeout: nil,
81
84
  faraday_config: nil,
82
85
  faraday_options: nil)
83
86
  api_name = instrumentation[:api_name] ||= 'api'
@@ -101,6 +104,8 @@ module RestfulResource
101
104
  @connection = connection || initialize_connection(logger: logger,
102
105
  cache_store: cache_store,
103
106
  instrumenter: ActiveSupport::Notifications,
107
+ timeout: timeout,
108
+ open_timeout: open_timeout,
104
109
  request_instrument_name: instrumentation.fetch(:request_instrument_name, nil),
105
110
  cache_instrument_name: instrumentation.fetch(:cache_instrument_name, nil),
106
111
  server_cache_instrument_name: instrumentation.fetch(:server_cache_instrument_name, nil),
@@ -115,8 +120,6 @@ module RestfulResource
115
120
  end
116
121
 
117
122
  @connection.headers[:user_agent] = build_user_agent(instrumentation[:app_name])
118
- @default_open_timeout = open_timeout
119
- @default_timeout = timeout
120
123
  end
121
124
 
122
125
  def get(url, headers: {}, open_timeout: nil, timeout: nil)
@@ -184,11 +187,11 @@ module RestfulResource
184
187
 
185
188
  private
186
189
 
187
- attr_reader :default_open_timeout, :default_timeout
188
-
189
190
  def initialize_connection(logger: nil,
190
191
  cache_store: nil,
191
192
  instrumenter: nil,
193
+ timeout: nil,
194
+ open_timeout: nil,
192
195
  request_instrument_name: nil,
193
196
  cache_instrument_name: nil,
194
197
  server_cache_instrument_name: nil,
@@ -215,6 +218,9 @@ module RestfulResource
215
218
 
216
219
  b.use :instrumentation, name: request_instrument_name if instrumenter && request_instrument_name
217
220
 
221
+ b.options.timeout = timeout || DEFAULT_TIMEOUT_IN_SECS
222
+ b.options.open_timeout = open_timeout || DEFAULT_OPEN_TIMEOUT_IN_SECS
223
+
218
224
  faraday_config&.call(b)
219
225
 
220
226
  b.response :encoding
@@ -234,14 +240,15 @@ module RestfulResource
234
240
 
235
241
  def http_request(request)
236
242
  response = @connection.send(request.method) do |req|
237
- req.options.open_timeout = request.open_timeout || default_open_timeout # seconds
238
- req.options.timeout = request.timeout || default_timeout # seconds
243
+ req.options.timeout = request.timeout if request.timeout
244
+ req.options.open_timeout = request.open_timeout if request.open_timeout
239
245
 
240
246
  req.body = request.body unless request.body.nil?
241
247
  req.url request.url
242
248
 
243
249
  req.headers = req.headers.merge(request.headers)
244
250
  end
251
+
245
252
  Response.new(body: response.body, headers: response.headers, status: response.status)
246
253
  rescue Faraday::ConnectionFailed
247
254
  raise
@@ -1,3 +1,3 @@
1
1
  module RestfulResource
2
- VERSION = '2.5.1'.freeze
2
+ VERSION = '2.5.2'.freeze
3
3
  end
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib']
19
19
  spec.required_ruby_version = '>= 2.4'
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.3'
22
- spec.add_development_dependency 'carwow_rubocop', '~> 2.0'
21
+ spec.add_development_dependency 'bundler'
22
+ spec.add_development_dependency 'carwow_rubocop'
23
23
  spec.add_development_dependency 'rake'
24
- spec.add_development_dependency 'rspec', '~> 3.1'
24
+ spec.add_development_dependency 'rspec'
25
25
  spec.add_development_dependency 'rspec_junit_formatter'
26
26
  spec.add_development_dependency 'rspec-its'
27
27
 
@@ -379,6 +379,8 @@ RSpec.describe RestfulResource::Base do
379
379
  let(:logger) { double }
380
380
  let(:cache_store) { double }
381
381
  let(:instrumentation) { double }
382
+ let(:timeout) { double }
383
+ let(:open_timeout) { double }
382
384
  let(:faraday_config) { double }
383
385
  let(:faraday_options) { double }
384
386
 
@@ -389,6 +391,8 @@ RSpec.describe RestfulResource::Base do
389
391
  logger: logger,
390
392
  cache_store: cache_store,
391
393
  instrumentation: instrumentation,
394
+ timeout: timeout,
395
+ open_timeout: open_timeout,
392
396
  faraday_config: faraday_config,
393
397
  faraday_options: faraday_options
394
398
  )
@@ -400,6 +404,8 @@ RSpec.describe RestfulResource::Base do
400
404
  logger: logger,
401
405
  cache_store: cache_store,
402
406
  instrumentation: instrumentation,
407
+ timeout: timeout,
408
+ open_timeout: open_timeout,
403
409
  faraday_config: faraday_config,
404
410
  faraday_options: faraday_options
405
411
  )
@@ -111,6 +111,13 @@ describe RestfulResource::HttpClient do
111
111
  end
112
112
  end
113
113
 
114
+ describe 'when provided a timeout' do
115
+ let(:connection) { described_class.new(timeout: 111, open_timeout: 222).instance_variable_get('@connection') }
116
+
117
+ it { expect(connection.options.timeout).to eq(111) }
118
+ it { expect(connection.options.open_timeout).to eq(222) }
119
+ end
120
+
114
121
  describe 'when provided a cache store' do
115
122
  let(:connection) { described_class.new(cache_store: 'redis').instance_variable_get('@connection') }
116
123
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Santoro
@@ -9,36 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-11-21 00:00:00.000000000 Z
12
+ date: 2019-05-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.3'
20
+ version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.3'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: carwow_rubocop
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '2.0'
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '2.0'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -57,16 +57,16 @@ dependencies:
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '3.1'
62
+ version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '3.1'
69
+ version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec_junit_formatter
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -288,8 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
288
  - !ruby/object:Gem::Version
289
289
  version: '0'
290
290
  requirements: []
291
- rubyforge_project:
292
- rubygems_version: 2.7.6
291
+ rubygems_version: 3.0.3
293
292
  signing_key:
294
293
  specification_version: 4
295
294
  summary: A simple activerecord inspired rest resource base class implemented using