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