module Ant::Server::Response
This module provides a function to wrap lambdas arround grape/sinatra You can mount this module as helper in your application and wrap the block with the method `process_request`
Attributes
format[R]
logger[R]
Public Class Methods
configure_defaults!()
click to toggle source
# File lib/ant/server/response.rb, line 32 def configure_defaults! recover_from!(Exceptions::AntSuccess, :success) recover_from!(Exceptions::AntFail, :fail) recover_from!(Exceptions::AntError, :error) register(:loggers, :cute_logger, Server::Logger.new) register(:formats, :jsend, Server::Format.new) log_mode(:cute_logger) format_mode(:jsend) end
format_mode(mode)
click to toggle source
# File lib/ant/server/response.rb, line 24 def format_mode(mode) @format = resource(:formats, mode) end
log_mode(mode)
click to toggle source
# File lib/ant/server/response.rb, line 20 def log_mode(mode) @logger = resource(:loggers, mode) end
recover_from!(exception_class, level)
click to toggle source
# File lib/ant/server/response.rb, line 28 def recover_from!(exception_class, level) register(:exceptions, exception_class, level) end
Public Instance Methods
exception_handler(exception)
click to toggle source
# File lib/ant/server/response.rb, line 43 def exception_handler(exception) Server::Response.resources(:exceptions).each do |klass, recover| return recover if exception.is_a?(klass) end exception.is_a?(StandardError) ? :fatal : nil end
handle(resolver, data)
click to toggle source
# File lib/ant/server/response.rb, line 50 def handle(resolver, data) if resolver Server::Response.logger.send(resolver, data) Server::Response.format.send(resolver, data) else Server::Response.logger.fatal(data) raise(data.exception) end end
process_request() { || ... }
click to toggle source
# File lib/ant/server/response.rb, line 60 def process_request params[:__init_time] = Time.now data = RequestResponse.new(request: request, params: params) resolver = :success Server::Response.logger.access(data) begin raise(AntError, 'No implementation given') unless block_given? data.result = yield # rubocop: disable RescueException rescue Exception => ex # rubocop: enable RescueException data.exception = ex resolver = exception_handler(ex) end handle(resolver, data) end