Class: Hurley::Test::Handler
- Inherits:
-
Object
- Object
- Hurley::Test::Handler
- Defined in:
- lib/hurley/test.rb
Constant Summary collapse
- EMPTY_OR_SLASH =
%r{\A/?\z}- URL_ATTRS =
[:scheme, :host, :port]
Instance Attribute Summary collapse
-
#callback ⇒ Object
readonly
Returns the value of attribute callback.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
Class Method Summary collapse
Instance Method Summary collapse
- #call(request) ⇒ Object
-
#initialize(request, callback) ⇒ Handler
constructor
A new instance of Handler.
- #matches?(request) ⇒ Boolean
- #run? ⇒ Boolean
Constructor Details
#initialize(request, callback) ⇒ Handler
Returns a new instance of Handler.
62 63 64 65 66 |
# File 'lib/hurley/test.rb', line 62 def initialize(request, callback) @request = request @callback = callback @path_regex = %r{\A#{@request.url.path}(/|\z)} end |
Instance Attribute Details
#callback ⇒ Object (readonly)
Returns the value of attribute callback.
54 55 56 |
# File 'lib/hurley/test.rb', line 54 def callback @callback end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
53 54 55 |
# File 'lib/hurley/test.rb', line 53 def request @request end |
Class Method Details
Instance Method Details
#call(request) ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/hurley/test.rb', line 68 def call(request) @run = true status, header, body = @callback.call(request) Response.new(request, status, Header.new(header)) do |res| Array(body).each do |chunk| res.receive_body(chunk) end end end |
#matches?(request) ⇒ Boolean
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/hurley/test.rb', line 78 def matches?(request) return false unless @request.verb == request.verb handler_url = @request.url request_url = request.url URL_ATTRS.each do |attr| value = handler_url.send(attr) return false if value && value != request_url.send(attr) end handler_url.query.subset_of?(request_url.query) && (handler_url.path =~ EMPTY_OR_SLASH || request_url.path =~ @path_regex) end |
#run? ⇒ Boolean
93 94 95 |
# File 'lib/hurley/test.rb', line 93 def run? !!@run end |