Sha256: bb25717762761489183bdc295698aff7e5574bdd2b9a02988aea939defb8b270
Contents?: true
Size: 1.94 KB
Versions: 7
Compression:
Stored size: 1.94 KB
Contents
require 'rubypitaya/core/handler_base' module RubyPitaya class HandlerRouter def initialize(handler_folder_path) import_handler_files(handler_folder_path) import_handler_classes end def import_handler_files(handler_folder_path) Gem.find_files("#{handler_folder_path}/*.rb").each { |path| require path } end def import_handler_classes handler_classes = ObjectSpace.each_object(HandlerBase.singleton_class).select do |klass| klass != HandlerBase end @handlers = handler_classes.map { |handler_class| handler_class.new } @handler_name_map = @handlers.map do |handler| handler_name = handler.class.to_s handler_name = handler_name[0].downcase + handler_name[1..-1] [handler_name, handler] end @handler_name_map = @handler_name_map.to_h end def call(handler_name, action_name, session, postman, redis, config, bll, params) unless @handler_name_map.include?(handler_name) return { code: StatusCodes::CODE_HANDLER_NOT_FOUNDED, msg: "Handler #{handler_name} not founded" } end unless @handler_name_map[handler_name].methods.include?(action_name.to_sym) return { code: StatusCodes::CODE_ACTION_NOT_FOUNDED, msg: "Handler #{handler_name} action #{action_name} not founded" } end handler = @handler_name_map[handler_name] handler.bll = bll handler.redis = redis handler.config = config handler.params = params handler.session = session handler.postman = postman if !handler.class.authenticated_action_name?(action_name) handler.send(action_name) else if session.authenticated? handler.send(action_name) else return { code: StatusCodes::CODE_NOT_AUTHENTICATED, msg: 'Not authenticated', } end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems