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