class Sapience::Extensions::Grape::Middleware::Logging

Public Class Methods

new(app, options = {}) click to toggle source
Calls superclass method
# File lib/sapience/extensions/grape/middleware/logging.rb, line 19
def initialize(app, options = {})
  super
  @logger = @options[:logger]
end

Protected Instance Methods

after() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 53
def after
  stop_time
  @logger.info(parameters)
end
after_exception(exc) click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 58
def after_exception(exc) # rubocop:disable Lint/UnusedMethodArgument
  @status = 500
  after
end
after_failure(error) click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 63
def after_failure(error)
  @status = error[:status]
  after
end
before() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 48
def before
  reset_db_runtime
  start_time
end
call!(env) click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 26
def call!(env)
  @env = env
  before
  error = catch(:error) do
    begin
      @app_response = @app.call(@env)
    rescue StandardError => e
      after_exception(e)
      raise e
    end
    nil
  end
  if error
    after_failure(error)
    throw(:error, error)
  else
    @status, = *@app_response
    after
  end
  @app_response
end
parameters() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 68
def parameters # rubocop:disable AbcSize
  {
    method: request.request_method,
    request_path: request.path,
    format: request_format(request.env),
    status: @status,
    class_name: env["api.endpoint"].options[:for].to_s,
    action: "index",
    host: request.host,
    ip: (request.env["HTTP_X_FORWARDED_FOR"] || request.env["REMOTE_ADDR"]),
    ua: request.env["HTTP_USER_AGENT"],
    # route: "test_controller#index",
    # message: "Completed #index",
    tags: Sapience.tags,
    params: request.params,
    runtimes: {
      total: total_runtime,
      view: view_runtime,
      db: db_runtime,
    },
  }
end

Private Instance Methods

db_runtime() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 105
def db_runtime
  Grape::Timings.db_runtime.round(3)
end
request() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 93
def request
  @request ||= ::Rack::Request.new(env)
end
reset_db_runtime() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 109
def reset_db_runtime
  Grape::Timings.reset_db_runtime
end
start_time() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 113
def start_time
  @start_time ||= Time.now
end
stop_time() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 117
def stop_time
  @stop_time ||= Time.now
end
total_runtime() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 97
def total_runtime
  ((stop_time - start_time) * 1000).round(3)
end
view_runtime() click to toggle source
# File lib/sapience/extensions/grape/middleware/logging.rb, line 101
def view_runtime
  total_runtime - db_runtime
end