Sha256: 42a0da82841256046820ecab44b103f9f60ca51ced52474e5a9c33123faf9205
Contents?: true
Size: 1.43 KB
Versions: 3
Compression:
Stored size: 1.43 KB
Contents
# frozen_string_literal: true require 'faraday/logging/formatter' module ErpIntegration module Middleware class Logger < Faraday::Middleware # Notice that logging headers will expose sensitive information # like api-key. DEFAULT_OPTIONS = { headers: false, bodies: true, errors: true }.freeze def initialize(app, logger = nil, options = {}) super(app) @logger = logger formatter_klass = options.delete(:formatter) || Faraday::Logging::Formatter @formatter = formatter_klass.new(logger: logger, options: DEFAULT_OPTIONS) yield @formatter if block_given? end def call(env) api_key_fragment = sanitize_api_key(env[:request_headers]['X-API-KEY']) if @logger.respond_to?(:tagged) @logger.tagged("API key *#{api_key_fragment}") do @formatter.request(env) @app.call(env).on_complete { |response| on_complete(response) } end else @logger.info("Requested ERP with API key *#{api_key_fragment}") @formatter.request(env) @app.call(env).on_complete { |response| on_complete(response) } end end def on_complete(env) @formatter.response(env) end def on_error(exc) @formatter.exception(exc) if @formatter.respond_to?(:exception) end def sanitize_api_key(api_key) api_key[-4..-1] if api_key end end end end
Version data entries
3 entries across 3 versions & 1 rubygems