acfs 0.44.0 → 0.45.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|