Class: HttpRouter::Node::Request
Instance Attribute Summary collapse
#priority, #router
Class Method Summary
collapse
Instance Method Summary
collapse
#add_arbitrary, #add_destination, #add_free_match, #add_glob, #add_match, #add_request, #add_spanning_match, #add_variable, #arbitrary, #destination, #glob, #join_whole_path, #linear, #lookup, #request, #unescape, #variable
Constructor Details
#initialize(router) ⇒ Request
Returns a new instance of Request.
10
11
12
|
# File 'lib/http_router/node/request.rb', line 10
def initialize(router)
@router, @linear, @catchall, @lookup = router, [], nil, {}
end
|
Instance Attribute Details
#request_method ⇒ Object
Returns the value of attribute request_method.
8
9
10
|
# File 'lib/http_router/node/request.rb', line 8
def request_method
@request_method
end
|
Class Method Details
.request_methods ⇒ Object
4
5
6
|
# File 'lib/http_router/node/request.rb', line 4
def self.request_methods
[:host, :scheme, :request_method, :user_agent]
end
|
Instance Method Details
#[](request) ⇒ Object
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/http_router/node/request.rb', line 51
def [](request)
if @request_method
val = request.rack_request.send(@request_method.to_sym)
@linear.each { |(matcher, node)| node[request] if matcher === val }
@lookup[val][request] if @lookup.key?(val)
@catchall[request] if @catchall
else
super(request)
end
end
|
#add_catchall ⇒ Object
41
42
43
|
# File 'lib/http_router/node/request.rb', line 41
def add_catchall
@catchall ||= Request.new(@router)
end
|
#add_linear(matcher) ⇒ Object
45
46
47
48
49
|
# File 'lib/http_router/node/request.rb', line 45
def add_linear(matcher)
next_node = Request.new(@router)
@linear << [matcher, next_node]
next_node
end
|
#add_lookup(val) ⇒ Object
37
38
39
|
# File 'lib/http_router/node/request.rb', line 37
def add_lookup(val)
@lookup[val] ||= Request.new(@router)
end
|
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/http_router/node/request.rb', line 14
def transform_to(meth)
new_node = Request.new(router)
new_node.request_method = @request_method
new_node.instance_var_set(:@linear, @linear.dup)
new_node.instance_var_set(:@catchall, @catchall)
new_node.instance_var_set(:@lookup, @lookup.dup)
@linear.clear
@lookup.clear
@catchall = new_node
@request_method = meth
new_node
end
|