acfs 1.3.2 → 1.5.1
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/CHANGELOG.md +39 -0
- data/README.md +10 -23
- data/acfs.gemspec +19 -20
- data/lib/acfs.rb +2 -0
- data/lib/acfs/adapter/base.rb +6 -8
- data/lib/acfs/adapter/typhoeus.rb +25 -6
- data/lib/acfs/collection.rb +2 -1
- data/lib/acfs/collections/paginatable.rb +4 -3
- data/lib/acfs/configuration.rb +14 -7
- data/lib/acfs/errors.rb +60 -19
- data/lib/acfs/global.rb +2 -0
- data/lib/acfs/location.rb +9 -5
- data/lib/acfs/middleware/base.rb +5 -1
- data/lib/acfs/middleware/json.rb +6 -2
- data/lib/acfs/middleware/logger.rb +2 -0
- data/lib/acfs/middleware/msgpack.rb +2 -0
- data/lib/acfs/middleware/print.rb +2 -0
- data/lib/acfs/middleware/serializer.rb +2 -0
- data/lib/acfs/operation.rb +20 -3
- data/lib/acfs/request.rb +5 -1
- data/lib/acfs/request/callbacks.rb +5 -1
- data/lib/acfs/resource.rb +2 -0
- data/lib/acfs/resource/attributes.rb +7 -4
- data/lib/acfs/resource/attributes/base.rb +2 -1
- data/lib/acfs/resource/attributes/boolean.rb +2 -0
- data/lib/acfs/resource/attributes/date_time.rb +3 -2
- data/lib/acfs/resource/attributes/dict.rb +2 -0
- data/lib/acfs/resource/attributes/float.rb +5 -3
- data/lib/acfs/resource/attributes/integer.rb +2 -0
- data/lib/acfs/resource/attributes/list.rb +2 -0
- data/lib/acfs/resource/attributes/string.rb +2 -0
- data/lib/acfs/resource/attributes/uuid.rb +4 -3
- data/lib/acfs/resource/dirty.rb +2 -0
- data/lib/acfs/resource/initialization.rb +2 -0
- data/lib/acfs/resource/loadable.rb +2 -0
- data/lib/acfs/resource/locatable.rb +10 -6
- data/lib/acfs/resource/operational.rb +2 -1
- data/lib/acfs/resource/persistence.rb +7 -6
- data/lib/acfs/resource/query_methods.rb +6 -4
- data/lib/acfs/resource/service.rb +3 -1
- data/lib/acfs/resource/validation.rb +19 -7
- data/lib/acfs/response.rb +2 -0
- data/lib/acfs/response/formats.rb +2 -0
- data/lib/acfs/response/status.rb +3 -1
- data/lib/acfs/rspec.rb +2 -0
- data/lib/acfs/runner.rb +6 -1
- data/lib/acfs/service.rb +24 -13
- data/lib/acfs/service/middleware.rb +2 -0
- data/lib/acfs/service/middleware/stack.rb +5 -3
- data/lib/acfs/singleton_resource.rb +4 -2
- data/lib/acfs/stub.rb +32 -11
- data/lib/acfs/util.rb +2 -0
- data/lib/acfs/version.rb +4 -2
- data/lib/acfs/yard.rb +1 -0
- data/spec/acfs/adapter/typhoeus_spec.rb +30 -3
- data/spec/acfs/collection_spec.rb +7 -5
- data/spec/acfs/configuration_spec.rb +2 -0
- data/spec/acfs/global_spec.rb +6 -3
- data/spec/acfs/location_spec.rb +2 -0
- data/spec/acfs/middleware/json_spec.rb +17 -1
- data/spec/acfs/middleware/msgpack_spec.rb +2 -0
- data/spec/acfs/operation_spec.rb +2 -0
- data/spec/acfs/request/callbacks_spec.rb +2 -0
- data/spec/acfs/request_spec.rb +3 -1
- data/spec/acfs/resource/attributes/boolean_spec.rb +2 -0
- data/spec/acfs/resource/attributes/date_time_spec.rb +2 -0
- data/spec/acfs/resource/attributes/dict_spec.rb +4 -2
- data/spec/acfs/resource/attributes/float_spec.rb +3 -1
- data/spec/acfs/resource/attributes/integer_spec.rb +2 -0
- data/spec/acfs/resource/attributes/list_spec.rb +5 -3
- data/spec/acfs/resource/attributes/uuid_spec.rb +2 -0
- data/spec/acfs/resource/attributes_spec.rb +8 -8
- data/spec/acfs/resource/dirty_spec.rb +2 -0
- data/spec/acfs/resource/initialization_spec.rb +8 -2
- data/spec/acfs/resource/loadable_spec.rb +2 -0
- data/spec/acfs/resource/locatable_spec.rb +2 -0
- data/spec/acfs/resource/persistance_spec.rb +10 -4
- data/spec/acfs/resource/query_methods_spec.rb +24 -17
- data/spec/acfs/resource/validation_spec.rb +2 -0
- data/spec/acfs/response/formats_spec.rb +3 -1
- data/spec/acfs/response/status_spec.rb +2 -0
- data/spec/acfs/runner_spec.rb +6 -8
- data/spec/acfs/service/middleware_spec.rb +2 -0
- data/spec/acfs/service_spec.rb +3 -1
- data/spec/acfs/singleton_resource_spec.rb +2 -0
- data/spec/acfs/stub_spec.rb +2 -0
- data/spec/acfs_spec.rb +2 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/support/hash.rb +2 -0
- data/spec/support/response.rb +2 -0
- data/spec/support/service.rb +1 -0
- data/spec/support/shared/find_callbacks.rb +2 -0
- metadata +26 -26
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Acfs::Resource::QueryMethods do
|
@@ -158,7 +160,8 @@ describe Acfs::Resource::QueryMethods do
|
|
158
160
|
.to_return response [
|
159
161
|
{id: 1, type: 'PC'},
|
160
162
|
{id: 2, type: 'Computer'},
|
161
|
-
{id: 3, type: 'Mac'}
|
163
|
+
{id: 3, type: 'Mac'}
|
164
|
+
]
|
162
165
|
end
|
163
166
|
|
164
167
|
it 'should invoke multiple callback after all models are loaded' do
|
@@ -209,7 +212,8 @@ describe Acfs::Resource::QueryMethods do
|
|
209
212
|
.to_return response [
|
210
213
|
{id: 1, type: 'MyUser'},
|
211
214
|
{id: 2, type: 'Computer'},
|
212
|
-
{id: 3, type: 'Mac'}
|
215
|
+
{id: 3, type: 'Mac'}
|
216
|
+
]
|
213
217
|
end
|
214
218
|
it_behaves_like 'with invalid type'
|
215
219
|
end
|
@@ -220,7 +224,8 @@ describe Acfs::Resource::QueryMethods do
|
|
220
224
|
.to_return response [
|
221
225
|
{id: 1, type: 'PC'},
|
222
226
|
{id: 2, type: 'noValidType'},
|
223
|
-
{id: 3, type: 'Mac'}
|
227
|
+
{id: 3, type: 'Mac'}
|
228
|
+
]
|
224
229
|
end
|
225
230
|
it_behaves_like 'with invalid type'
|
226
231
|
end
|
@@ -231,7 +236,8 @@ describe Acfs::Resource::QueryMethods do
|
|
231
236
|
.to_return response [
|
232
237
|
{id: 1, type: 'PC'},
|
233
238
|
{id: 2, type: 'Computer'},
|
234
|
-
{id: 3, type: 42}
|
239
|
+
{id: 3, type: 42}
|
240
|
+
]
|
235
241
|
end
|
236
242
|
it_behaves_like 'with invalid type'
|
237
243
|
end
|
@@ -270,7 +276,8 @@ describe Acfs::Resource::QueryMethods do
|
|
270
276
|
.to_return response [
|
271
277
|
{id: 1, name: 'Mike', age: 24},
|
272
278
|
{id: 4, type: 'Maria', age: 24},
|
273
|
-
{id: 7, type: 'James', age: 24}
|
279
|
+
{id: 7, type: 'James', age: 24}
|
280
|
+
]
|
274
281
|
end
|
275
282
|
|
276
283
|
it 'should invoke callback after model is loaded' do
|
@@ -410,25 +417,25 @@ describe Acfs::Resource::QueryMethods do
|
|
410
417
|
.to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
411
418
|
headers: {
|
412
419
|
'X-Total-Pages' => '4',
|
413
|
-
'Link'
|
420
|
+
'Link' => '<http://users.example.org/users?page=2>; rel="next"'
|
414
421
|
})
|
415
422
|
stub_request(:get, 'http://users.example.org/users?page=2')
|
416
423
|
.to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
417
424
|
headers: {
|
418
425
|
'X-Total-Pages' => '4',
|
419
|
-
'Link'
|
426
|
+
'Link' => '<http://users.example.org/users?page=3>; rel="next"'
|
420
427
|
})
|
421
428
|
stub_request(:get, 'http://users.example.org/users?page=3')
|
422
429
|
.to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
423
430
|
headers: {
|
424
431
|
'X-Total-Pages' => '4',
|
425
|
-
'Link'
|
432
|
+
'Link' => '<http://users.example.org/users?page=4>; rel="next"'
|
426
433
|
})
|
427
434
|
stub_request(:get, 'http://users.example.org/users?page=4')
|
428
435
|
.to_return response([{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
429
436
|
headers: {
|
430
437
|
'X-Total-Pages' => '4',
|
431
|
-
'Link'
|
438
|
+
'Link' => ''
|
432
439
|
})
|
433
440
|
end
|
434
441
|
|
@@ -452,25 +459,25 @@ describe Acfs::Resource::QueryMethods do
|
|
452
459
|
.to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
453
460
|
headers: {
|
454
461
|
'X-Total-Pages' => '4',
|
455
|
-
'Link'
|
462
|
+
'Link' => '<http://users.example.org/users?where=fuu&page=2>; rel="next"'
|
456
463
|
})
|
457
464
|
stub_request(:get, 'http://users.example.org/users?where=fuu&page=2')
|
458
465
|
.to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
459
466
|
headers: {
|
460
467
|
'X-Total-Pages' => '4',
|
461
|
-
'Link'
|
468
|
+
'Link' => '<http://users.example.org/users?page=3>; rel="next"'
|
462
469
|
})
|
463
470
|
stub_request(:get, 'http://users.example.org/users?page=3')
|
464
471
|
.to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
465
472
|
headers: {
|
466
473
|
'X-Total-Pages' => '4',
|
467
|
-
'Link'
|
474
|
+
'Link' => '<http://users.example.org/users?page=4>; rel="next"'
|
468
475
|
})
|
469
476
|
stub_request(:get, 'http://users.example.org/users?page=4')
|
470
477
|
.to_return response([{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
471
478
|
headers: {
|
472
479
|
'X-Total-Pages' => '4',
|
473
|
-
'Link'
|
480
|
+
'Link' => ''
|
474
481
|
})
|
475
482
|
end
|
476
483
|
|
@@ -496,25 +503,25 @@ describe Acfs::Resource::QueryMethods do
|
|
496
503
|
.to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
497
504
|
headers: {
|
498
505
|
'X-Total-Pages' => '4',
|
499
|
-
'Link'
|
506
|
+
'Link' => '<http://users.example.org/users?page=2>; rel="next"'
|
500
507
|
})
|
501
508
|
stub_request(:get, 'http://users.example.org/users?page=2')
|
502
509
|
.to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
503
510
|
headers: {
|
504
511
|
'X-Total-Pages' => '4',
|
505
|
-
'Link'
|
512
|
+
'Link' => '<http://users.example.org/users?page=3>; rel="next"'
|
506
513
|
})
|
507
514
|
stub_request(:get, 'http://users.example.org/users?page=3')
|
508
515
|
.to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}, {id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
509
516
|
headers: {
|
510
517
|
'X-Total-Pages' => '4',
|
511
|
-
'Link'
|
518
|
+
'Link' => '<http://users.example.org/users?page=4>; rel="next"'
|
512
519
|
})
|
513
520
|
stub_request(:get, 'http://users.example.org/users?page=4')
|
514
521
|
.to_return response([{id: 5, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
|
515
522
|
headers: {
|
516
523
|
'X-Total-Pages' => '4',
|
517
|
-
'Link'
|
524
|
+
'Link' => ''
|
518
525
|
})
|
519
526
|
end
|
520
527
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Acfs::Response::Formats do
|
@@ -9,7 +11,7 @@ describe Acfs::Response::Formats do
|
|
9
11
|
let(:response) { Acfs::Response.new request, status: status, headers: headers, body: body }
|
10
12
|
|
11
13
|
context 'without Content-Type header' do
|
12
|
-
let(:headers)
|
14
|
+
let(:headers) { {} }
|
13
15
|
|
14
16
|
it "should fallback on 'text/plain'" do
|
15
17
|
expect(response.content_type).to be == Mime[:text]
|
data/spec/acfs/runner_spec.rb
CHANGED
@@ -1,25 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
class NullAdapter < Acfs::Adapter::Base
|
4
6
|
# Start processing queued requests.
|
5
7
|
#
|
6
|
-
def start
|
7
|
-
end
|
8
|
+
def start; end
|
8
9
|
|
9
10
|
# Abort running and queued requests.
|
10
11
|
#
|
11
|
-
def abort
|
12
|
-
end
|
12
|
+
def abort; end
|
13
13
|
|
14
14
|
# Run request right now skipping queue.
|
15
15
|
#
|
16
|
-
def run(_)
|
17
|
-
end
|
16
|
+
def run(_); end
|
18
17
|
|
19
18
|
# Enqueue request to be run later.
|
20
19
|
#
|
21
|
-
def queue(_)
|
22
|
-
end
|
20
|
+
def queue(_); end
|
23
21
|
end
|
24
22
|
|
25
23
|
class NotificationCollector
|
data/spec/acfs/service_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Acfs::Service do
|
@@ -19,7 +21,7 @@ describe Acfs::Service do
|
|
19
21
|
|
20
22
|
describe '#location' do
|
21
23
|
let(:resource) { Class.new }
|
22
|
-
before { allow(resource).to receive(:location_default_path, &proc{|_a, p| p}) }
|
24
|
+
before { allow(resource).to receive(:location_default_path, &proc {|_a, p| p }) }
|
23
25
|
|
24
26
|
it 'should extract resource path name from given class' do
|
25
27
|
expect(service.location(resource).to_s).to eq('/classes')
|
data/spec/acfs/stub_spec.rb
CHANGED
data/spec/acfs_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rspec'
|
2
4
|
require 'webmock/rspec'
|
3
5
|
|
@@ -17,7 +19,7 @@ Bundler.require(:default, :test)
|
|
17
19
|
require 'acfs'
|
18
20
|
require 'webmock/rspec'
|
19
21
|
|
20
|
-
Dir[File.expand_path('spec/support/**/*.rb')].each {|f| require f }
|
22
|
+
Dir[File.expand_path('spec/support/**/*.rb')].sort.each {|f| require f }
|
21
23
|
|
22
24
|
RSpec.configure do |config|
|
23
25
|
# ## Mock Framework
|
data/spec/support/hash.rb
CHANGED
data/spec/support/response.rb
CHANGED
data/spec/support/service.rb
CHANGED
metadata
CHANGED
@@ -1,73 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: actionpack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '5.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.2'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '5.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: multi_json
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: typhoeus
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
@@ -94,6 +80,20 @@ dependencies:
|
|
94
80
|
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: typhoeus
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,7 +110,7 @@ dependencies:
|
|
110
110
|
version: '0'
|
111
111
|
description: API Client For Services
|
112
112
|
email:
|
113
|
-
-
|
113
|
+
- jgraichen@altimos.de
|
114
114
|
executables: []
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
@@ -228,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
228
|
- !ruby/object:Gem::Version
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
|
-
rubygems_version: 3.
|
231
|
+
rubygems_version: 3.2.3
|
232
232
|
signing_key:
|
233
233
|
specification_version: 4
|
234
234
|
summary: An abstract API base client for service oriented application.
|