Class: Hurley::Test::Handler

Inherits:
Object
  • Object
show all
Defined in:
lib/hurley/test.rb

Constant Summary collapse

EMPTY_OR_SLASH =
%r{\A/?\z}
URL_ATTRS =
[:scheme, :host, :port]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#callbackObject (readonly)

Returns the value of attribute callback.



54
55
56
# File 'lib/hurley/test.rb', line 54

def callback
  @callback
end

#requestObject (readonly)

Returns the value of attribute request.



53
54
55
# File 'lib/hurley/test.rb', line 53

def request
  @request
end

Class Method Details

.not_found(request) ⇒ Object



56
57
58
59
60
# File 'lib/hurley/test.rb', line 56

def self.not_found(request)
  Response.new(request, 404, Header.new) do |res|
    res.receive_body("no test handler")
  end
end

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

Returns:

  • (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

Returns:

  • (Boolean)


93
94
95
# File 'lib/hurley/test.rb', line 93

def run?
  !!@run
end