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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +10 -23
  4. data/acfs.gemspec +19 -20
  5. data/lib/acfs.rb +2 -0
  6. data/lib/acfs/adapter/base.rb +6 -8
  7. data/lib/acfs/adapter/typhoeus.rb +25 -6
  8. data/lib/acfs/collection.rb +2 -1
  9. data/lib/acfs/collections/paginatable.rb +4 -3
  10. data/lib/acfs/configuration.rb +14 -7
  11. data/lib/acfs/errors.rb +60 -19
  12. data/lib/acfs/global.rb +2 -0
  13. data/lib/acfs/location.rb +9 -5
  14. data/lib/acfs/middleware/base.rb +5 -1
  15. data/lib/acfs/middleware/json.rb +6 -2
  16. data/lib/acfs/middleware/logger.rb +2 -0
  17. data/lib/acfs/middleware/msgpack.rb +2 -0
  18. data/lib/acfs/middleware/print.rb +2 -0
  19. data/lib/acfs/middleware/serializer.rb +2 -0
  20. data/lib/acfs/operation.rb +20 -3
  21. data/lib/acfs/request.rb +5 -1
  22. data/lib/acfs/request/callbacks.rb +5 -1
  23. data/lib/acfs/resource.rb +2 -0
  24. data/lib/acfs/resource/attributes.rb +7 -4
  25. data/lib/acfs/resource/attributes/base.rb +2 -1
  26. data/lib/acfs/resource/attributes/boolean.rb +2 -0
  27. data/lib/acfs/resource/attributes/date_time.rb +3 -2
  28. data/lib/acfs/resource/attributes/dict.rb +2 -0
  29. data/lib/acfs/resource/attributes/float.rb +5 -3
  30. data/lib/acfs/resource/attributes/integer.rb +2 -0
  31. data/lib/acfs/resource/attributes/list.rb +2 -0
  32. data/lib/acfs/resource/attributes/string.rb +2 -0
  33. data/lib/acfs/resource/attributes/uuid.rb +4 -3
  34. data/lib/acfs/resource/dirty.rb +2 -0
  35. data/lib/acfs/resource/initialization.rb +2 -0
  36. data/lib/acfs/resource/loadable.rb +2 -0
  37. data/lib/acfs/resource/locatable.rb +10 -6
  38. data/lib/acfs/resource/operational.rb +2 -1
  39. data/lib/acfs/resource/persistence.rb +7 -6
  40. data/lib/acfs/resource/query_methods.rb +6 -4
  41. data/lib/acfs/resource/service.rb +3 -1
  42. data/lib/acfs/resource/validation.rb +19 -7
  43. data/lib/acfs/response.rb +2 -0
  44. data/lib/acfs/response/formats.rb +2 -0
  45. data/lib/acfs/response/status.rb +3 -1
  46. data/lib/acfs/rspec.rb +2 -0
  47. data/lib/acfs/runner.rb +6 -1
  48. data/lib/acfs/service.rb +24 -13
  49. data/lib/acfs/service/middleware.rb +2 -0
  50. data/lib/acfs/service/middleware/stack.rb +5 -3
  51. data/lib/acfs/singleton_resource.rb +4 -2
  52. data/lib/acfs/stub.rb +32 -11
  53. data/lib/acfs/util.rb +2 -0
  54. data/lib/acfs/version.rb +4 -2
  55. data/lib/acfs/yard.rb +1 -0
  56. data/spec/acfs/adapter/typhoeus_spec.rb +30 -3
  57. data/spec/acfs/collection_spec.rb +7 -5
  58. data/spec/acfs/configuration_spec.rb +2 -0
  59. data/spec/acfs/global_spec.rb +6 -3
  60. data/spec/acfs/location_spec.rb +2 -0
  61. data/spec/acfs/middleware/json_spec.rb +17 -1
  62. data/spec/acfs/middleware/msgpack_spec.rb +2 -0
  63. data/spec/acfs/operation_spec.rb +2 -0
  64. data/spec/acfs/request/callbacks_spec.rb +2 -0
  65. data/spec/acfs/request_spec.rb +3 -1
  66. data/spec/acfs/resource/attributes/boolean_spec.rb +2 -0
  67. data/spec/acfs/resource/attributes/date_time_spec.rb +2 -0
  68. data/spec/acfs/resource/attributes/dict_spec.rb +4 -2
  69. data/spec/acfs/resource/attributes/float_spec.rb +3 -1
  70. data/spec/acfs/resource/attributes/integer_spec.rb +2 -0
  71. data/spec/acfs/resource/attributes/list_spec.rb +5 -3
  72. data/spec/acfs/resource/attributes/uuid_spec.rb +2 -0
  73. data/spec/acfs/resource/attributes_spec.rb +8 -8
  74. data/spec/acfs/resource/dirty_spec.rb +2 -0
  75. data/spec/acfs/resource/initialization_spec.rb +8 -2
  76. data/spec/acfs/resource/loadable_spec.rb +2 -0
  77. data/spec/acfs/resource/locatable_spec.rb +2 -0
  78. data/spec/acfs/resource/persistance_spec.rb +10 -4
  79. data/spec/acfs/resource/query_methods_spec.rb +24 -17
  80. data/spec/acfs/resource/validation_spec.rb +2 -0
  81. data/spec/acfs/response/formats_spec.rb +3 -1
  82. data/spec/acfs/response/status_spec.rb +2 -0
  83. data/spec/acfs/runner_spec.rb +6 -8
  84. data/spec/acfs/service/middleware_spec.rb +2 -0
  85. data/spec/acfs/service_spec.rb +3 -1
  86. data/spec/acfs/singleton_resource_spec.rb +2 -0
  87. data/spec/acfs/stub_spec.rb +2 -0
  88. data/spec/acfs_spec.rb +2 -0
  89. data/spec/spec_helper.rb +3 -1
  90. data/spec/support/hash.rb +2 -0
  91. data/spec/support/response.rb +2 -0
  92. data/spec/support/service.rb +1 -0
  93. data/spec/support/shared/find_callbacks.rb +2 -0
  94. 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' => '<http://users.example.org/users?page=2>; rel="next"'
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' => '<http://users.example.org/users?page=3>; rel="next"'
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' => '<http://users.example.org/users?page=4>; rel="next"'
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' => '<http://users.example.org/users?where=fuu&page=2>; rel="next"'
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' => '<http://users.example.org/users?page=3>; rel="next"'
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' => '<http://users.example.org/users?page=4>; rel="next"'
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' => '<http://users.example.org/users?page=2>; rel="next"'
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' => '<http://users.example.org/users?page=3>; rel="next"'
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' => '<http://users.example.org/users?page=4>; rel="next"'
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::Resource::Validation do
@@ -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]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Acfs::Response::Status do
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  class TestMiddleware < Acfs::Middleware::Base
@@ -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')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Acfs::SingletonResource do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  class SpecialCustomError < StandardError; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'Acfs' do
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ActiveSupport::HashWithIndifferentAccess
2
4
  def ==(other)
3
5
  if other.respond_to? :with_indifferent_access
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
3
5
  def response(data = nil, opts = {})
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  Acfs.configure do
3
4
  locate :user_service, 'http://users.example.org'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  shared_examples 'a query method with multi-callback support' do
2
4
  let(:cb) { Proc.new }
3
5
 
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.3.2
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: 2019-09-24 00:00:00.000000000 Z
11
+ date: 2020-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: actionpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
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: '4.2'
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: '4.2'
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: '4.2'
40
+ version: '5.2'
41
41
  - !ruby/object:Gem::Dependency
42
- name: actionpack
42
+ name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '4.2'
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: '4.2'
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
- - jg@altimos.de
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.0.6
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.