module FReCon::Routes
Public: A module containing all of the routes.
Public Class Methods
attribute_routes(base, name, controller)
click to toggle source
Public: Set up basic attribute route handlers.
base - Sinatra::Application to register the routes under. name - String containing the model name. controller - Controller-like object.
# File lib/frecon/routes.rb, line 68 def self.attribute_routes(base, name, controller) model = controller.model model_attribute_methods = model.class_variable_get(:@@attributes) model_attribute_methods.each do |model_attribute_method| base.get "/#{name}/:id/#{model_attribute_method[:attribute]}" do begin @model = controller.find_model(params) params.delete('id') result = @model.method(model_attribute_method[:method]).call if result.is_a? Mongoid::Criteria params.delete('splat') params.delete('captures') result.psv_filter(params).to_json else result.to_json end rescue RequestError => e e.return_value end end end end
included(base)
click to toggle source
Public: Bootstrap the routes into inclusors of this module.
base - The child that included this module (should be a Sinatra App)
# File lib/frecon/routes.rb, line 100 def self.included(base) resource_routes base, 'teams', TeamsController resource_routes base, 'competitions', CompetitionsController resource_routes base, 'matches', MatchesController resource_routes base, 'records', RecordsController resource_routes base, 'robots', RobotsController resource_routes base, 'participations', ParticipationsController attribute_routes base, 'teams', TeamsController attribute_routes base, 'competitions', CompetitionsController attribute_routes base, 'matches', MatchesController attribute_routes base, 'records', RecordsController attribute_routes base, 'robots', RobotsController attribute_routes base, 'participations', ParticipationsController base.before do params.delete('_') end base.get '/dump' do begin DumpController.full params rescue RequestError => e e.return_value end end if ENV['PRINT_ROUTES'] base.routes.each do |verb, routes| puts "#{verb}:" routes.each do |route| puts " #{route[0]}" end end end end
resource_routes(base, name, controller)
click to toggle source
Public: Set up basic resource route handlers.
base - Sinatra::Application to register the routes under. name - String containing the model name. controller - Controller-like object that contains key methods.
# File lib/frecon/routes.rb, line 21 def self.resource_routes(base, name, controller) base.post "/#{name}" do begin controller.create request, params rescue RequestError => e e.return_value end end base.put "/#{name}/:id" do begin controller.update request, params rescue RequestError => e e.return_value end end base.delete "/#{name}/:id" do begin controller.delete params rescue RequestError => e e.return_value end end base.get "/#{name}/:id" do begin controller.show params rescue RequestError => e e.return_value end end base.get "/#{name}" do begin controller.index params rescue RequestError => e e.return_value end end end