Sha256: 9ea0687b68aa515a189fb4edbf633a2a4345448a3c66fae85f930df8c5bb67b8

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require 'forwardable'

module MarketoApi
  class Middleware::Logger < Faraday::Middleware
    extend Forwardable

    def initialize(app, logger, options)
      super(app)
      @options = options
      @logger = logger || begin
        require 'logger'
        ::Logger.new($stdout)
      end
    end

    def_delegators :@logger, :debug, :info, :warn, :error, :fatal

    def call(env)
      debug('request') do
        dump :url => env[:url].to_s,
             :method => env[:method],
             :headers => env[:request_headers],
             :body => env[:body]
      end
      super
    end

    def on_complete(env)
      debug('response') do
        dump :status => env[:status].to_s,
             :headers => env[:response_headers],
             :body => env[:body]
      end
    end

    def on_error(exc)
      debug('response') do
        dump :details => "#{self.class.name}::#{__method__} - Exception: #{exc.message}",
             :backtrace => exc.backtrace.join("\n")
      end
    end

    def dump(hash)
      "\n" + hash.map { |k, v| "  #{k}: #{v.inspect}" }.join("\n")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
marketo_api-0.3.0.pre.alpha lib/marketo_api/middleware/logger.rb