acfs 0.44.0 → 0.45.0
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 +6 -0
- data/acfs.gemspec +1 -1
- data/lib/acfs/middleware/json.rb +3 -0
- data/lib/acfs/middleware/msgpack.rb +3 -0
- data/lib/acfs/resource/query_methods.rb +2 -2
- data/lib/acfs/service/middleware.rb +20 -28
- data/lib/acfs/service/middleware/stack.rb +34 -0
- data/lib/acfs/version.rb +1 -1
- data/spec/acfs/middleware/json_spec.rb +0 -6
- data/spec/acfs/middleware/msgpack_spec.rb +0 -6
- data/spec/acfs/service/middleware_spec.rb +3 -19
- data/spec/spec_helper.rb +1 -0
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94d04da7b680edf457505737b4bcc1d18d6e3fb3
|
4
|
+
data.tar.gz: 629b89356e8be9625b20722ca89bfe88ff3d5bc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7afc2b923b468780cd3dabd0d6ff592e829b2b158d3b96469513ca324e2644a6e4d30f48408efb0ef48bc53e35595b963b8700131d8a8a81933eb4bef8f324b1
|
7
|
+
data.tar.gz: 45349a36fa4c76f564f95897102e74e4a934b9ddee69cb785868a9b75a2fd652b4ada7687d4c974a856a65b1dfb18caf372eaa963211851edf75edbc8a1a40d1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.45.0
|
4
|
+
|
5
|
+
* Fetching multiple records (`find(ary)`) is stable now, but untested (#38)
|
6
|
+
* Middleware stack is build on ActionDispatch::MiddlewareStack now
|
7
|
+
* Deprecate legacy middleware names (xyEncoder, xyDecoder)
|
8
|
+
|
3
9
|
## 0.44.0
|
4
10
|
|
5
11
|
* Add option to configure adapter creation and pass option to typhoeus adapter e.g.
|
data/acfs.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_runtime_dependency 'multi_json'
|
25
25
|
|
26
26
|
# Bundle update w/o version resolves to 0.3.3 ...
|
27
|
-
spec.add_runtime_dependency 'typhoeus', '
|
27
|
+
spec.add_runtime_dependency 'typhoeus', '~> 1.0'
|
28
28
|
|
29
29
|
spec.add_runtime_dependency 'rack'
|
30
30
|
|
data/lib/acfs/middleware/json.rb
CHANGED
@@ -223,9 +223,9 @@ class Acfs::Resource
|
|
223
223
|
collection.__callbacks__ << block unless block.nil?
|
224
224
|
|
225
225
|
counter = 0
|
226
|
-
ids.
|
226
|
+
ids.each_with_index do |id, index|
|
227
227
|
find_single id, opts do |resource|
|
228
|
-
collection
|
228
|
+
collection[index] = resource
|
229
229
|
if (counter += 1) == ids.size
|
230
230
|
collection.loaded!
|
231
231
|
collection.__invoke__
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'acfs/service/middleware/stack'
|
2
|
+
|
1
3
|
module Acfs
|
2
4
|
class Service
|
3
5
|
# Module providing all function to register middlewares
|
@@ -15,27 +17,25 @@ module Acfs
|
|
15
17
|
end
|
16
18
|
|
17
19
|
module ClassMethods
|
18
|
-
#
|
20
|
+
# @!method use(klass, *args, &block)
|
21
|
+
# @api public
|
19
22
|
#
|
20
|
-
#
|
23
|
+
# Register a new middleware to be used for this service.
|
21
24
|
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
25
|
+
# @example
|
26
|
+
# class MyService < Acfs::Service
|
27
|
+
# self.base_url = 'http://my.srv'
|
28
|
+
# use Acfs::Middleware::JSON
|
29
|
+
# end
|
27
30
|
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
+
# @param [Class] klass Middleware class to append
|
32
|
+
# @param [Array<Object>] args Arguments passed to klass initialize
|
33
|
+
# @param [Proc] block Block passed to klass initialize
|
34
|
+
# @return [undefined]
|
31
35
|
#
|
32
|
-
def use(klass,
|
33
|
-
|
34
|
-
|
35
|
-
return false if @middlewares.include? klass
|
36
|
-
|
37
|
-
@middlewares << klass
|
38
|
-
@middleware = klass.new(middleware, options)
|
36
|
+
def use(klass, *args, &block)
|
37
|
+
# Backward compatible behavior
|
38
|
+
middleware.insert(0, klass, *args, &block)
|
39
39
|
end
|
40
40
|
|
41
41
|
# @api private
|
@@ -45,19 +45,11 @@ module Acfs
|
|
45
45
|
# @return [#call]
|
46
46
|
#
|
47
47
|
def middleware
|
48
|
-
@middleware ||=
|
48
|
+
@middleware ||= Stack.new
|
49
49
|
end
|
50
50
|
|
51
|
-
# @
|
52
|
-
|
53
|
-
# Clear all registered middlewares.
|
54
|
-
#
|
55
|
-
# @return [undefined]
|
56
|
-
#
|
57
|
-
def clear
|
58
|
-
@middleware = nil
|
59
|
-
@middlewares = []
|
60
|
-
end
|
51
|
+
# @deprecated
|
52
|
+
delegate :clear, to: :middleware
|
61
53
|
end
|
62
54
|
end
|
63
55
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'action_dispatch/middleware/stack'
|
2
|
+
|
3
|
+
module Acfs
|
4
|
+
class Service
|
5
|
+
module Middleware
|
6
|
+
class Stack < ActionDispatch::MiddlewareStack
|
7
|
+
MUTEX = Mutex.new
|
8
|
+
IDENTITY = -> (i) { i }
|
9
|
+
|
10
|
+
def build!
|
11
|
+
MUTEX.synchronize do
|
12
|
+
return if @stack
|
13
|
+
|
14
|
+
@stack = build
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def build(app = IDENTITY)
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(request)
|
23
|
+
build! unless @stack
|
24
|
+
|
25
|
+
@stack.call request
|
26
|
+
end
|
27
|
+
|
28
|
+
def clear
|
29
|
+
middlewares.clear
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/acfs/version.rb
CHANGED
@@ -12,12 +12,6 @@ describe Acfs::Middleware::JSON do
|
|
12
12
|
decoder.call request
|
13
13
|
end
|
14
14
|
|
15
|
-
context 'API compatibility' do
|
16
|
-
subject { Acfs::Middleware::JSON }
|
17
|
-
it { is_expected.to eql Acfs::Middleware::JsonDecoder }
|
18
|
-
it { is_expected.to eql Acfs::Middleware::JsonEncoder }
|
19
|
-
end
|
20
|
-
|
21
15
|
describe 'encode' do
|
22
16
|
context 'with not serialized request' do
|
23
17
|
it 'should set Content-Type' do
|
@@ -12,12 +12,6 @@ describe Acfs::Middleware::MessagePack do
|
|
12
12
|
decoder.call request
|
13
13
|
end
|
14
14
|
|
15
|
-
context 'API compatibility' do
|
16
|
-
subject { Acfs::Middleware::MessagePack }
|
17
|
-
it { is_expected.to eql Acfs::Middleware::MessagePackDecoder }
|
18
|
-
it { is_expected.to eql Acfs::Middleware::MessagePackEncoder }
|
19
|
-
end
|
20
|
-
|
21
15
|
describe 'encode' do
|
22
16
|
context 'with not serialized request' do
|
23
17
|
it 'should set Content-Type' do
|
@@ -6,7 +6,6 @@ end
|
|
6
6
|
describe Acfs::Service::Middleware do
|
7
7
|
let(:srv_class) { Class.new(Acfs::Service) }
|
8
8
|
let(:options) { {} }
|
9
|
-
let(:service) { srv_class.new options }
|
10
9
|
let(:middleware) { TestMiddleware }
|
11
10
|
|
12
11
|
describe '.use' do
|
@@ -15,35 +14,20 @@ describe Acfs::Service::Middleware do
|
|
15
14
|
it 'should add middleware to list' do
|
16
15
|
srv_class.use middleware
|
17
16
|
|
18
|
-
expect(srv_class.
|
17
|
+
expect(srv_class.middleware).to include(middleware)
|
19
18
|
end
|
20
19
|
|
21
20
|
it 'should add middleware to stack' do
|
22
21
|
srv_class.use middleware
|
23
22
|
|
24
|
-
expect(srv_class.middleware).to be_a(middleware)
|
23
|
+
expect(srv_class.middleware.build(1)).to be_a(middleware)
|
25
24
|
end
|
26
25
|
|
27
26
|
it 'should instantiate middleware object' do
|
28
27
|
expect(middleware).to receive(:new).with(anything, options)
|
29
28
|
|
30
29
|
srv_class.use middleware, options
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '.clear' do
|
35
|
-
before { srv_class.use middleware }
|
36
|
-
|
37
|
-
it 'should clear middleware list' do
|
38
|
-
srv_class.clear
|
39
|
-
|
40
|
-
expect(srv_class.instance_variable_get(:@middlewares)).to be_empty
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should reset middleware stack' do
|
44
|
-
srv_class.clear
|
45
|
-
|
46
|
-
expect(srv_class.instance_variable_get(:@middleware)).to be_nil
|
30
|
+
srv_class.middleware.build
|
47
31
|
end
|
48
32
|
end
|
49
33
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.45.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: typhoeus
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
75
|
+
version: '1.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
82
|
+
version: '1.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rack
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- lib/acfs/runner.rb
|
165
165
|
- lib/acfs/service.rb
|
166
166
|
- lib/acfs/service/middleware.rb
|
167
|
+
- lib/acfs/service/middleware/stack.rb
|
167
168
|
- lib/acfs/singleton_resource.rb
|
168
169
|
- lib/acfs/stub.rb
|
169
170
|
- lib/acfs/util.rb
|