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::CuteLogger.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
  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