class Wouter::Endpoint
`Wouter::Endpoint` is a class to help define Rack compatible endpoints that can be assigned to a route path. Each `Wouter::Endpoint` instance is a Rack application of it's own. It provides convience methods for creating endpoints.
Attributes
config[R]
req[R]
res[R]
Public Class Methods
call(env, config = {})
click to toggle source
# File lib/wouter/endpoint.rb, line 18 def self.call(env, config = {}) endpoint = new(Rack::Request.new(env), Rack::Response.new) response = endpoint.respond return response.finish if response.is_a?(Rack::Response) endpoint.res.write response endpoint.res.finish end
new(req, res)
click to toggle source
# File lib/wouter/endpoint.rb, line 12 def initialize(req, res) @req = req @res = res @config = req.env['wouter'] end
Public Instance Methods
headers(hash = nil)
click to toggle source
# File lib/wouter/endpoint.rb, line 36 def headers(hash = nil) @res.headers.merge! hash if hash @res.headers end
not_found()
click to toggle source
# File lib/wouter/endpoint.rb, line 46 def not_found Wouter::Util.not_found end
params()
click to toggle source
# File lib/wouter/endpoint.rb, line 32 def params @req.params end
redirect(location)
click to toggle source
# File lib/wouter/endpoint.rb, line 50 def redirect(location) status 302 headers['Location'] = location @res end
respond()
click to toggle source
# File lib/wouter/endpoint.rb, line 28 def respond raise NotImplementedError, 'you must implemented #respond in your Wouter::Endpoint class' end
status(code)
click to toggle source
# File lib/wouter/endpoint.rb, line 41 def status(code) @res.status = code @res.status end