class Squad

Constants

DEFAULT_HEADER

Public Class Methods

application(&block) click to toggle source
# File lib/squad.rb, line 17
def self.application(&block)
  @app = new(&block) 
end
call(env) click to toggle source
# File lib/squad.rb, line 21
def self.call(env)
  @app.call(env)
end
new(&block) click to toggle source
# File lib/squad.rb, line 10
def initialize(&block)
  instance_eval(&block)
end
redis() click to toggle source
# File lib/squad.rb, line 14
def self.redis; @redis = settings[:redis] || Redic.new end
routes() click to toggle source
# File lib/squad.rb, line 25
def self.routes; @routes ||= {} end
settings() click to toggle source
# File lib/squad.rb, line 15
def self.settings; @settings ||= {} end

Public Instance Methods

call(env) click to toggle source
# File lib/squad.rb, line 31
def call(env); dup.call!(env) end
call!(env) click to toggle source
# File lib/squad.rb, line 33
def call!(env)
  request = Rack::Request.new(env)
  seg = Seg.new(request.path_info)
  
  inbox = {}
  seg.capture(:segment, inbox)  
  segment = inbox[:segment].to_sym
  raise BadRequestError unless klass = self.class.routes[segment]

  resource = klass.new(segment)
  resource.run(seg)
  resource.render(request)
  [resource.status, resource.header, [resource.to_json]]
rescue Error => e
  [e.status, e.header, [JSON.dump(e.body)]]
rescue Exception => e
  puts "message: #{e.message}, b: #{e.backtrace}"
  error = Error.new
  [error.status, error.header, [JSON.dump(error.body)]]
end
resources(name, &block) click to toggle source
# File lib/squad.rb, line 27
def resources(name, &block)
  self.class.routes[name] = Resource.factor(&block)
end