Sha256: d2b898f68f677bb8fe9086a4042952960d95704541025468f6cc1ff7a9ec7f62

Contents?: true

Size: 986 Bytes

Versions: 1

Compression:

Stored size: 986 Bytes

Contents

module FinApps
  module Middleware

    class ResponseLogger < Faraday::Response::Middleware
      include FinApps::Logging

      def call(env)
        logger.info "##{env.method} #{env.url.to_s}"
        logger.debug('Request Headers') { dump_headers env.request_headers }
        super
      end

      def on_complete(env)
        logger.info "Status: #{env.status.to_s}"
        logger.debug('Response Headers') { dump_headers env.response_headers }
        logger.debug('Response Body') {dump_body env.body } if env.body
      end

      private
      def dump_headers(headers)
        "\n" << headers.map { |k, v| "  #{k}: #{filter_sensitive_header_values(k,v)}" }.join("\n")
      end

      def filter_sensitive_header_values(key, value)
        case key
          when 'X-FinApps-Token', 'Basic-Authorization'
            value.inspect
          else
            '[REDACTED]'
        end
      end

      def dump_body(body)
        "\n" << body
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
finapps-0.0.14.pre lib/finapps/middleware/response_logger.rb