class Lanes::API::RoutingBlock
Public Class Methods
new(ext_id)
click to toggle source
# File lib/lanes/api/routing.rb, line 15 def initialize(ext_id) Lanes::Extensions.for_identifier(ext_id) || raise( "Unable to find extension '#{ext_id}' for screen group") @ext_id = ext_id end
Public Instance Methods
enable_cors(path_suffix, options = {origins: '*', methods: [:get]})
click to toggle source
# File lib/lanes/api/routing.rb, line 27 def enable_cors(path_suffix, options = {origins: '*', methods: [:get]}) API::Root::CORS_PATHS[make_path(path_suffix)] = options end
resources(model, options = {})
click to toggle source
# File lib/lanes/api/routing.rb, line 31 def resources(model, options = {}) path = options[:path] || model.api_path controller = options[:controller] || Lanes::API::GenericController format = options[:format] || '.json' if options[:under] options[:parent_attribute] = options[:under].underscore.singularize+'_id' end prefix = options[:parent_attribute] ? options[:parent_attribute] + '/' : '' configured_routes = Hash.new{|hsh, key| hsh[key] = []} bind = lambda{ |method, route, wrapper_method = method| route = route + format configured_routes[route].push(method) self.send( method, route, &RequestWrapper.send(wrapper_method, model, controller, options) ) } # show if controller.method_defined?(:show) bind[:get, "#{prefix}#{path}/?:id?"] end # create if controller.method_defined?(:create) bind[:post, "#{prefix}#{path}"] end unless options[:immutable] # update if controller.method_defined?(:update) bind[:patch, "#{prefix}#{path}/?:id?", :update] bind[:put, "#{prefix}#{path}/?:id?", :update] end # destroy if controller.method_defined?(:destroy) and not options[:indestructible] bind[:delete, "#{prefix}#{path}/?:id?"] end end if options[:cors] cors = options[:cors].is_a?(Hash) ? otions[:cors] : {origins: options[:cors]} configured_routes.each do | route, methods | enable_cors route, cors.merge(methods: methods) end end end
Private Instance Methods
make_path(path)
click to toggle source
# File lib/lanes/api/routing.rb, line 88 def make_path(path) path = Lanes.config.api_path + '/' + @ext_id + '/' + path Lanes.logger.debug("[route]: #{path}") path end