class Fake::RequestHandler
Attributes
body[RW]
responses[R]
Public Class Methods
new(method, path)
click to toggle source
Creates handler for http request method: :get, :post, :put etc path: Path
of the request like '/home/something'
# File lib/fake/request_handler.rb, line 13 def initialize(method, path) @method = method uri = URI.parse(path) @params = parse_params(uri) @path = Path.new(uri.path) @responses = InfiniteQueue.new @body = nil end
Public Instance Methods
call(request)
click to toggle source
# File lib/fake/request_handler.rb, line 22 def call(request) if should_serve?(request) current_response = @responses.next raise "FAKE service: No response set for request #{presentation}" if current_response.nil? current_response.evaluate() Rack::Response.new([current_response.body], status=current_response.status, header=current_response.headers) end end
Private Instance Methods
parse_params(uri)
click to toggle source
# File lib/fake/request_handler.rb, line 43 def parse_params(uri) if uri.query Rack::Utils.parse_nested_query(uri.query) else {} end end
presentation()
click to toggle source
# File lib/fake/request_handler.rb, line 51 def presentation @path end
should_serve?(request)
click to toggle source
# File lib/fake/request_handler.rb, line 32 def should_serve?(request) should_serve = @path.eql?(request.path) && request.request_method.eql?(@method.to_s.upcase) if should_serve && @params != {} should_serve = request.params == @params end if should_serve && @body != nil should_serve = @body == request.body_string end should_serve end