angus 0.0.4 → 0.0.5
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.
@@ -3,6 +3,8 @@ require 'angus-router'
|
|
3
3
|
require_relative 'response'
|
4
4
|
require_relative 'responses'
|
5
5
|
require_relative 'middleware/exception_handler'
|
6
|
+
require_relative 'exceptions'
|
7
|
+
MiddlewareNotFound
|
6
8
|
|
7
9
|
module Angus
|
8
10
|
class RequestHandler
|
@@ -11,6 +13,8 @@ module Angus
|
|
11
13
|
|
12
14
|
DEFAULT_RENDER = :json
|
13
15
|
|
16
|
+
attr_reader :middleware
|
17
|
+
|
14
18
|
def initialize
|
15
19
|
@router = Angus::Router.new
|
16
20
|
@middleware = []
|
@@ -28,7 +32,11 @@ module Angus
|
|
28
32
|
|
29
33
|
def to_app
|
30
34
|
inner_app = lambda { |env| self.dup.call!(env) }
|
31
|
-
@middleware.reverse.inject(inner_app)
|
35
|
+
@middleware.reverse.inject(inner_app) do |app, middleware|
|
36
|
+
klass, args, block = middleware
|
37
|
+
|
38
|
+
klass.new(app, *args, &block)
|
39
|
+
end
|
32
40
|
end
|
33
41
|
|
34
42
|
def call!(env)
|
@@ -63,7 +71,23 @@ module Angus
|
|
63
71
|
end
|
64
72
|
|
65
73
|
def use(middleware, *args, &block)
|
66
|
-
|
74
|
+
return if @middleware.map(&:first).include?(middleware)
|
75
|
+
|
76
|
+
@middleware << [middleware, args, block]
|
77
|
+
end
|
78
|
+
|
79
|
+
def use_before(klass, middleware, *args, &block)
|
80
|
+
return if @middleware.map(&:first).include?(middleware)
|
81
|
+
index = @middleware.map(&:first).index(klass) or raise MiddlewareNotFound.new(middleware)
|
82
|
+
|
83
|
+
@middleware.insert(index, [middleware, args, block])
|
84
|
+
end
|
85
|
+
|
86
|
+
def use_after(klass, middleware, *args, &block)
|
87
|
+
return if @middleware.map(&:first).include?(middleware)
|
88
|
+
index = @middleware.map(&:first).index(klass) or raise MiddlewareNotFound.new(middleware)
|
89
|
+
|
90
|
+
@middleware.insert(index + 1, [middleware, args, block])
|
67
91
|
end
|
68
92
|
|
69
93
|
end
|
data/lib/angus/version.rb
CHANGED
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'angus/request_handler'
|
4
|
+
|
5
|
+
work_dir = File.join(File.dirname(__FILE__), '..', 'functional', 'basic')
|
6
|
+
describe Angus::RequestHandler, { :work_dir => work_dir } do
|
7
|
+
|
8
|
+
subject(:handler) { Angus::RequestHandler.new }
|
9
|
+
|
10
|
+
let(:app) { double(:app) }
|
11
|
+
|
12
|
+
describe '.new' do
|
13
|
+
it 'has a a exception handler middleware' do
|
14
|
+
handler.middleware.map(&:first).should include(Angus::Middleware::ExceptionHandler)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#use' do
|
19
|
+
|
20
|
+
let(:other_middleware) { Struct.new(:app) }
|
21
|
+
|
22
|
+
it 'adds the given middleware after the rest' do
|
23
|
+
handler.use(other_middleware)
|
24
|
+
|
25
|
+
handler.middleware.last.first.should eq(other_middleware)
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when the given middleware is already present' do
|
29
|
+
before { handler.use(other_middleware) }
|
30
|
+
|
31
|
+
it 'does not modify the middleware' do
|
32
|
+
expect {
|
33
|
+
handler.use(other_middleware)
|
34
|
+
}.to_not change { handler.middleware }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#use_after' do
|
41
|
+
|
42
|
+
let(:other_middleware) { Struct.new(:app) }
|
43
|
+
|
44
|
+
it 'adds the given middleware after the given class' do
|
45
|
+
handler.use_after(Angus::Middleware::ExceptionHandler, other_middleware)
|
46
|
+
|
47
|
+
handler.middleware.last.first.should eq(other_middleware)
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when the given class is not present in the middleware' do
|
51
|
+
it 'raises an MiddlewareNotFound error' do
|
52
|
+
expect {
|
53
|
+
handler.use_after(Angus::Middleware, other_middleware)
|
54
|
+
}.to raise_error(MiddlewareNotFound)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when the given middleware is already present' do
|
59
|
+
before { handler.use_after(Angus::Middleware::ExceptionHandler, other_middleware) }
|
60
|
+
|
61
|
+
it 'does not modify the middleware' do
|
62
|
+
expect {
|
63
|
+
handler.use_after(Angus::Middleware::ExceptionHandler, other_middleware)
|
64
|
+
}.to_not change { handler.middleware }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#use_before' do
|
71
|
+
|
72
|
+
let(:other_middleware) { Struct.new(:app) }
|
73
|
+
|
74
|
+
it 'adds the given middleware before the given class' do
|
75
|
+
handler.use_before(Angus::Middleware::ExceptionHandler, other_middleware)
|
76
|
+
|
77
|
+
handler.middleware.first.first.should eq(other_middleware)
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'when the given class is not present in the middleware' do
|
81
|
+
it 'raises an MiddlewareNotFound error' do
|
82
|
+
expect {
|
83
|
+
handler.use_before(Angus::Middleware, other_middleware)
|
84
|
+
}.to raise_error(MiddlewareNotFound)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'when the given middleware is already present' do
|
89
|
+
before { handler.use_before(Angus::Middleware::ExceptionHandler, other_middleware) }
|
90
|
+
|
91
|
+
it 'does not modify the middleware' do
|
92
|
+
expect {
|
93
|
+
handler.use_before(Angus::Middleware::ExceptionHandler, other_middleware)
|
94
|
+
}.to_not change { handler.middleware }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
get_user:
|
2
|
-
name: Obtener
|
2
|
+
name: Obtener Informacion de un Usuario
|
3
3
|
description: >
|
4
|
-
Devuelve
|
4
|
+
Devuelve informacion del usuario, como por ejemplo e-mail y fecha de nacimiento.
|
5
5
|
|
6
6
|
path: /users/:user_id
|
7
7
|
method: get
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-11-
|
14
|
+
date: 2013-11-29 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: thor
|
@@ -233,6 +233,7 @@ files:
|
|
233
233
|
- lib/angus/base_resource.rb
|
234
234
|
- lib/angus/command.rb
|
235
235
|
- lib/angus/response.rb
|
236
|
+
- lib/angus/exceptions.rb
|
236
237
|
- lib/angus/middleware/exception_handler.rb
|
237
238
|
- lib/angus/rspec/support/examples/describe_errors.rb
|
238
239
|
- lib/angus/rspec/support/matchers/operation_response_matchers.rb
|
@@ -247,6 +248,7 @@ files:
|
|
247
248
|
- lib/angus/base.rb
|
248
249
|
- lib/angus.rb
|
249
250
|
- spec/spec_helper.rb
|
251
|
+
- spec/angus/request_handler_spec.rb
|
250
252
|
- spec/angus/middleware/exception_handler_spec.rb
|
251
253
|
- spec/angus/rspec/examples/describe_errors_spec.rb
|
252
254
|
- spec/functional/no_resources_spec.rb
|
@@ -297,6 +299,7 @@ specification_version: 3
|
|
297
299
|
summary: angus
|
298
300
|
test_files:
|
299
301
|
- spec/spec_helper.rb
|
302
|
+
- spec/angus/request_handler_spec.rb
|
300
303
|
- spec/angus/middleware/exception_handler_spec.rb
|
301
304
|
- spec/angus/rspec/examples/describe_errors_spec.rb
|
302
305
|
- spec/functional/no_resources_spec.rb
|