class Ably::Rest::Middleware::Logger

Public Class Methods

new(app, logger = nil) click to toggle source
Calls superclass method
# File lib/submodules/ably-ruby/lib/ably/rest/middleware/logger.rb, line 9
def initialize(app, logger = nil)
  super(app)
  @logger = logger || begin
    require 'logger'
    ::Logger.new(STDOUT)
  end
end

Public Instance Methods

call(env) click to toggle source
Calls superclass method
# File lib/submodules/ably-ruby/lib/ably/rest/middleware/logger.rb, line 19
def call(env)
  debug { "=> URL: #{env.method} #{env.url}, Headers: #{dump_headers env.request_headers}" }
  debug { "=> Body: #{body_for(env)}" }
  super
end
on_complete(env) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/rest/middleware/logger.rb, line 25
def on_complete(env)
  debug "<= Status: #{env.status}, Headers: #{dump_headers env.response_headers}"
  debug "<= Body: #{body_for(env)}"
end

Private Instance Methods

body_for(env) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/rest/middleware/logger.rb, line 35
def body_for(env)
  return '' if !env.body || env.body.empty?

  if env.request_headers['Content-Type'] == 'application/x-msgpack'
    MessagePack.unpack(env.body)
  else
    env.body
  end

rescue StandardError
  readable_body(env.body)
end
dump_headers(headers) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/rest/middleware/logger.rb, line 31
def dump_headers(headers)
  headers.map { |k, v| "#{k}: #{v.inspect}" }.join(", ")
end
readable_body(body) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/rest/middleware/logger.rb, line 48
def readable_body(body)
  if body.respond_to?(:encoding) && body.encoding == Encoding::ASCII_8BIT
    body.unpack('H*')
  else
    body
  end
end