restful_resource 2.2.6 → 2.2.7
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/lib/restful_resource/base.rb +2 -17
- data/lib/restful_resource/version.rb +1 -1
- data/spec/restful_resource/base_spec.rb +0 -219
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9faff51b36ab1690640882d31329a7737aa68f4e
|
4
|
+
data.tar.gz: f850d5a2afc9f32bbc18f9673dc82ed9d520ca33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 137d0b430d88db910b9e6ed5de1c6f00c50e509a94cfc46c51ffd819245cf9103d5bf4e6063e3da7473518927adda7958f056727a2c7c635772e84b5879aa2e9
|
7
|
+
data.tar.gz: c03523b7ae7a3763185d484cf0a49f2491cac3cec1862271d7bd5bc1801367ddb8e7a01f3418da3a467b3a5ac19ceac6194afeb57537688b6d99493372c20c03
|
@@ -8,11 +8,9 @@ module RestfulResource
|
|
8
8
|
logger: nil,
|
9
9
|
cache_store: nil,
|
10
10
|
instrumentation: {},
|
11
|
-
context_lambda: nil,
|
12
11
|
faraday_config: nil)
|
13
12
|
|
14
13
|
@base_url = URI.parse(base_url)
|
15
|
-
@context_lambda = context_lambda
|
16
14
|
|
17
15
|
@http = RestfulResource::HttpClient.new(username: username,
|
18
16
|
password: password,
|
@@ -56,7 +54,7 @@ module RestfulResource
|
|
56
54
|
|
57
55
|
def self.put(id, data: {}, headers: {}, **params)
|
58
56
|
params_without_options, options = format_params(params)
|
59
|
-
|
57
|
+
options.delete(:headers)
|
60
58
|
|
61
59
|
url = member_url(id, params_without_options)
|
62
60
|
|
@@ -66,7 +64,7 @@ module RestfulResource
|
|
66
64
|
|
67
65
|
def self.post(data: {}, headers: {}, **params)
|
68
66
|
params_without_options, options = format_params(params)
|
69
|
-
|
67
|
+
options.delete(:headers)
|
70
68
|
|
71
69
|
url = collection_url(params_without_options)
|
72
70
|
|
@@ -121,18 +119,12 @@ module RestfulResource
|
|
121
119
|
replace_parameters(url, params)
|
122
120
|
end
|
123
121
|
|
124
|
-
def self.context_lambda
|
125
|
-
superclass.instance_variable_get :@context_lambda
|
126
|
-
end
|
127
|
-
|
128
122
|
private
|
129
123
|
|
130
124
|
def self.format_params(params = {})
|
131
125
|
headers = params.delete(:headers) || {}
|
132
126
|
|
133
127
|
headers.merge!(cache_control: 'no-cache') if params.delete(:no_cache)
|
134
|
-
headers.merge!(context_headers) if self.context_lambda
|
135
|
-
|
136
128
|
open_timeout = params.delete(:open_timeout)
|
137
129
|
timeout = params.delete(:timeout)
|
138
130
|
|
@@ -192,12 +184,5 @@ module RestfulResource
|
|
192
184
|
array = parse_json(response.body).map { |attributes| self.new(attributes) }
|
193
185
|
PaginatedArray.new(array, previous_page_url: prev_url, next_page_url: next_url, total_count: response.headers[:x_total_count])
|
194
186
|
end
|
195
|
-
|
196
|
-
def self.context_headers
|
197
|
-
self
|
198
|
-
.context_lambda
|
199
|
-
.call
|
200
|
-
.select { |k,_| k.to_s.start_with?('source_') }
|
201
|
-
end
|
202
187
|
end
|
203
188
|
end
|
@@ -65,32 +65,6 @@ RSpec.describe RestfulResource::Base do
|
|
65
65
|
|
66
66
|
Make.find(12, no_cache: true)
|
67
67
|
end
|
68
|
-
|
69
|
-
it 'skips context headers when context_lambda is not set' do
|
70
|
-
expect_get("http://api.carwow.co.uk/makes/12",
|
71
|
-
RestfulResource::Response.new,
|
72
|
-
headers: { cache_control: 'no-cache' })
|
73
|
-
|
74
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
75
|
-
|
76
|
-
Make.find(12, no_cache: true)
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'adds context headers when context_lambda is set' do
|
80
|
-
expect_get("http://api.carwow.co.uk/makes/12",
|
81
|
-
RestfulResource::Response.new,
|
82
|
-
headers: {
|
83
|
-
cache_control: 'no-cache',
|
84
|
-
source_type: 'controller',
|
85
|
-
source_class: 'SomeController',
|
86
|
-
source_identifier: 'index',
|
87
|
-
}
|
88
|
-
)
|
89
|
-
|
90
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
91
|
-
|
92
|
-
Make.find(12, no_cache: true)
|
93
|
-
end
|
94
68
|
end
|
95
69
|
|
96
70
|
describe "#where" do
|
@@ -132,32 +106,6 @@ RSpec.describe RestfulResource::Base do
|
|
132
106
|
|
133
107
|
Model.where(make_slug: 'Volkswagen', on_sale: true, group_id: 15, no_cache: true)
|
134
108
|
end
|
135
|
-
|
136
|
-
it 'skips context headers when context_lambda is not set' do
|
137
|
-
expect_get("http://api.carwow.co.uk/groups/15/makes/Volkswagen/models?on_sale=true",
|
138
|
-
RestfulResource::Response.new,
|
139
|
-
headers: { cache_control: 'no-cache' })
|
140
|
-
|
141
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
142
|
-
|
143
|
-
Model.where(make_slug: 'Volkswagen', on_sale: true, group_id: 15, no_cache: true)
|
144
|
-
end
|
145
|
-
|
146
|
-
it 'adds context headers when context_lambda is set' do
|
147
|
-
expect_get("http://api.carwow.co.uk/groups/15/makes/Volkswagen/models?on_sale=true",
|
148
|
-
RestfulResource::Response.new,
|
149
|
-
headers: {
|
150
|
-
cache_control: 'no-cache',
|
151
|
-
source_type: 'controller',
|
152
|
-
source_class: 'SomeController',
|
153
|
-
source_identifier: 'index',
|
154
|
-
}
|
155
|
-
)
|
156
|
-
|
157
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
158
|
-
|
159
|
-
Model.where(make_slug: 'Volkswagen', on_sale: true, group_id: 15, no_cache: true)
|
160
|
-
end
|
161
109
|
end
|
162
110
|
|
163
111
|
describe "#all" do
|
@@ -186,32 +134,6 @@ RSpec.describe RestfulResource::Base do
|
|
186
134
|
|
187
135
|
Make.all(no_cache: true)
|
188
136
|
end
|
189
|
-
|
190
|
-
it 'skips context headers when context_lambda is not set' do
|
191
|
-
expect_get("http://api.carwow.co.uk/makes",
|
192
|
-
RestfulResource::Response.new,
|
193
|
-
headers: { cache_control: 'no-cache' })
|
194
|
-
|
195
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
196
|
-
|
197
|
-
Make.all(no_cache: true)
|
198
|
-
end
|
199
|
-
|
200
|
-
it 'adds context headers when context_lambda is set' do
|
201
|
-
expect_get("http://api.carwow.co.uk/makes",
|
202
|
-
RestfulResource::Response.new,
|
203
|
-
headers: {
|
204
|
-
cache_control: 'no-cache',
|
205
|
-
source_type: 'controller',
|
206
|
-
source_class: 'SomeController',
|
207
|
-
source_identifier: 'index',
|
208
|
-
}
|
209
|
-
)
|
210
|
-
|
211
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
212
|
-
|
213
|
-
Make.all(no_cache: true)
|
214
|
-
end
|
215
137
|
end
|
216
138
|
|
217
139
|
describe "#base_url" do
|
@@ -272,32 +194,6 @@ RSpec.describe RestfulResource::Base do
|
|
272
194
|
|
273
195
|
Make.action(:average_score).get(no_cache: true)
|
274
196
|
end
|
275
|
-
|
276
|
-
it 'skips context headers when context_lambda is not set' do
|
277
|
-
expect_get("http://api.carwow.co.uk/makes/average_score",
|
278
|
-
RestfulResource::Response.new,
|
279
|
-
headers: { cache_control: 'no-cache' })
|
280
|
-
|
281
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
282
|
-
|
283
|
-
Make.action(:average_score).get(no_cache: true)
|
284
|
-
end
|
285
|
-
|
286
|
-
it 'adds context headers when context_lambda is set' do
|
287
|
-
expect_get("http://api.carwow.co.uk/makes/average_score",
|
288
|
-
RestfulResource::Response.new,
|
289
|
-
headers: {
|
290
|
-
cache_control: 'no-cache',
|
291
|
-
source_type: 'controller',
|
292
|
-
source_class: 'SomeController',
|
293
|
-
source_identifier: 'index',
|
294
|
-
}
|
295
|
-
)
|
296
|
-
|
297
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
298
|
-
|
299
|
-
Make.action(:average_score).get(no_cache: true)
|
300
|
-
end
|
301
197
|
end
|
302
198
|
|
303
199
|
describe "#put" do
|
@@ -348,32 +244,6 @@ RSpec.describe RestfulResource::Base do
|
|
348
244
|
|
349
245
|
Make.put(1, data: {}, headers: { accept: 'application/json' })
|
350
246
|
end
|
351
|
-
|
352
|
-
it 'skips context headers when context_lambda is not set' do
|
353
|
-
expect_put("http://api.carwow.co.uk/makes/1",
|
354
|
-
RestfulResource::Response.new,
|
355
|
-
headers: { accept: 'application/json' })
|
356
|
-
|
357
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
358
|
-
|
359
|
-
Make.put(1, data: {}, headers: { accept: 'application/json' })
|
360
|
-
end
|
361
|
-
|
362
|
-
it 'adds context headers when context_lambda is set' do
|
363
|
-
expect_put("http://api.carwow.co.uk/makes/1",
|
364
|
-
RestfulResource::Response.new,
|
365
|
-
headers: {
|
366
|
-
accept: 'application/json',
|
367
|
-
source_type: 'controller',
|
368
|
-
source_class: 'SomeController',
|
369
|
-
source_identifier: 'index',
|
370
|
-
}
|
371
|
-
)
|
372
|
-
|
373
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
374
|
-
|
375
|
-
Make.put(1, data: {}, headers: { accept: 'application/json' })
|
376
|
-
end
|
377
247
|
end
|
378
248
|
|
379
249
|
describe "#post" do
|
@@ -396,32 +266,6 @@ RSpec.describe RestfulResource::Base do
|
|
396
266
|
|
397
267
|
Make.post(data: {}, headers: { accept: 'application/json' })
|
398
268
|
end
|
399
|
-
|
400
|
-
it 'skips context headers when context_lambda is not set' do
|
401
|
-
expect_post("http://api.carwow.co.uk/makes",
|
402
|
-
RestfulResource::Response.new,
|
403
|
-
headers: { accept: 'application/json' })
|
404
|
-
|
405
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
406
|
-
|
407
|
-
Make.post(data: {}, headers: { accept: 'application/json' })
|
408
|
-
end
|
409
|
-
|
410
|
-
it 'adds context headers when context_lambda is set' do
|
411
|
-
expect_post("http://api.carwow.co.uk/makes",
|
412
|
-
RestfulResource::Response.new,
|
413
|
-
headers: {
|
414
|
-
accept: 'application/json',
|
415
|
-
source_type: 'controller',
|
416
|
-
source_class: 'SomeController',
|
417
|
-
source_identifier: 'index',
|
418
|
-
}
|
419
|
-
)
|
420
|
-
|
421
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
422
|
-
|
423
|
-
Make.post(data: {}, headers: { accept: 'application/json' })
|
424
|
-
end
|
425
269
|
end
|
426
270
|
|
427
271
|
describe "#delete" do
|
@@ -441,32 +285,6 @@ RSpec.describe RestfulResource::Base do
|
|
441
285
|
|
442
286
|
Make.delete(1, headers: { accept: 'application/json' })
|
443
287
|
end
|
444
|
-
|
445
|
-
it 'skips context headers when context_lambda is not set' do
|
446
|
-
expect_delete("http://api.carwow.co.uk/makes/1",
|
447
|
-
RestfulResource::Response.new,
|
448
|
-
headers: { accept: 'application/json' })
|
449
|
-
|
450
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(nil)
|
451
|
-
|
452
|
-
Make.delete(1, headers: { accept: 'application/json' })
|
453
|
-
end
|
454
|
-
|
455
|
-
it 'adds context headers when context_lambda is set' do
|
456
|
-
expect_delete("http://api.carwow.co.uk/makes/1",
|
457
|
-
RestfulResource::Response.new,
|
458
|
-
headers: {
|
459
|
-
accept: 'application/json',
|
460
|
-
source_type: 'controller',
|
461
|
-
source_class: 'SomeController',
|
462
|
-
source_identifier: 'index',
|
463
|
-
}
|
464
|
-
)
|
465
|
-
|
466
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(context_lambda).twice
|
467
|
-
|
468
|
-
Make.delete(1, headers: { accept: 'application/json' })
|
469
|
-
end
|
470
288
|
end
|
471
289
|
|
472
290
|
describe ".as_json" do
|
@@ -516,43 +334,6 @@ RSpec.describe RestfulResource::Base do
|
|
516
334
|
instrumentation: instrumentation,
|
517
335
|
faraday_config: faraday_config)
|
518
336
|
end
|
519
|
-
|
520
|
-
it "stores a lambda when it is defined" do
|
521
|
-
a_lambda = lambda { {context: 'info'} }
|
522
|
-
|
523
|
-
RestfulResource::Base.configure(base_url: 'http://foo.bar',
|
524
|
-
instrumentation: {context_lambda: a_lambda})
|
525
|
-
|
526
|
-
RestfulResource::Base.instance_variable_get(:@context_lambda).equal?(a_lambda)
|
527
|
-
end
|
528
|
-
end
|
529
|
-
|
530
|
-
describe ".context_headers" do
|
531
|
-
it "builds headers from keys in context_lambda starting with 'source_' only" do
|
532
|
-
a_lambda = context_lambda(
|
533
|
-
source_present: 'value',
|
534
|
-
random_key: 'should not be present'
|
535
|
-
)
|
536
|
-
|
537
|
-
expect(RestfulResource::Base).to receive(:context_lambda).and_return(a_lambda)
|
538
|
-
|
539
|
-
expect(RestfulResource::Base.context_headers).to eq(
|
540
|
-
source_type: 'controller',
|
541
|
-
source_class: 'SomeController',
|
542
|
-
source_identifier: 'index',
|
543
|
-
source_present: 'value'
|
544
|
-
)
|
545
|
-
end
|
546
|
-
end
|
547
|
-
|
548
|
-
def context_lambda(args = {})
|
549
|
-
lambda do
|
550
|
-
{
|
551
|
-
source_type: 'controller',
|
552
|
-
source_class: 'SomeController',
|
553
|
-
source_identifier: 'index',
|
554
|
-
}.merge(args)
|
555
|
-
end
|
556
337
|
end
|
557
338
|
|
558
339
|
def response_with_page_information
|
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.2.
|
4
|
+
version: 2.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Santoro
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-05-
|
12
|
+
date: 2018-05-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -258,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
258
|
version: '0'
|
259
259
|
requirements: []
|
260
260
|
rubyforge_project:
|
261
|
-
rubygems_version: 2.
|
261
|
+
rubygems_version: 2.6.14.1
|
262
262
|
signing_key:
|
263
263
|
specification_version: 4
|
264
264
|
summary: A simple activerecord inspired rest resource base class implemented using
|