class AppBaseController::RpcMethodStubHelper
Public Class Methods
new(bound_method, auth=false)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 147 def initialize(bound_method, auth=false) @bound_method = bound_method @auth = auth @method_name = bound_method.name @model_name = bound_method.receiver.name.to_s.extend(AppBase::StringExtension) init end
Public Instance Methods
add_stub(controller)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 155 def add_stub(controller) controller.class_eval %- def rpc_#{@model_name.underscore}_#{@method_name} #{@requires.map{|p|"params.require #{p}"}.join(';')} render json: { status: 'ok', data: #{@model_name}.#{@method_name}(#{@parameters.join(', ')}) } rescue Exception => e render json: { status: 'error', msg: e.to_s } end - end
Private Instance Methods
init()
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 167 def init init_parameters do |parameters, need_params| @requires = parameters.map{|p|":#{p[1]}"} @parameters = @auth ? ['current_user'] : [] @requires.each { |p| @parameters << "params[#{p}]" } if need_params @parameters.push "params.except(:action, :controller#{@requires.count > 0 ? ", #{@requires.join(', ')}" : ""})" end end end
init_parameters() { |parameters, need_params| ... }
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 190 def init_parameters parameters = @bound_method.parameters pre_init_parameters(parameters) need_params = false if parameters.count > 0 && parameters.last[0] == :opt need_params = true parameters = parameters[(@auth ? 1 : 0)..-2] else parameters = parameters[(@auth ? 1 : 0)..-1] end post_init_parameters(parameters) yield parameters, need_params end
post_init_parameters(parameters)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 184 def post_init_parameters(parameters) if parameters.find{|p|p[0]!=:req} raise "Error exposing #{@model_name}.#{@method_name} to appbase engine, appbase does not support rest/optional parameters, use options instead!" end end
pre_init_parameters(parameters)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 178 def pre_init_parameters(parameters) if @auth && (parameters.count == 0 || parameters[0][0] != :req) raise "#{@model_name}.#{@method_name} does not accept current user identity as the first parameter. Using `expose_to_appbase :method_name, auth: false` to expose #{@model_name}.#{@method_name} to appbase without user authentication." end end