Sha256: f802cfd4eea7cc4f071ee26bd91dda0b2ec86a08bf565c0c44e2bb9b86b10573

Contents?: true

Size: 1.74 KB

Versions: 10

Compression:

Stored size: 1.74 KB

Contents

require "uri"

module PactBroker
  module Config
    module RuntimeConfigurationLoggingMethods
      module ClassMethods
        def sensitive_values(*values)
          @sensitive_values ||= []
          if values
            @sensitive_values.concat([*values])
          else
            @sensitive_values
          end
        end

        def sensitive_value?(value)
          sensitive_values.any? { |key| key == value || key == value.to_sym || key.kind_of?(Regexp) && key =~ value }
        end
      end

      module InstanceMethods
        def log_configuration(logger)
          to_source_trace.sort_by { |key, _| key }.each { |key, value| log_config_inner(key, value, logger) }
        end

        def log_config_inner(key, value, logger)
          if !value.has_key? :value
            value.sort_by { |inner_key, _| inner_key }.each { |inner_key, inner_value| log_config_inner("#{key}.#{inner_key}", inner_value, logger) }
          elsif self.class.sensitive_value?(key)
            logger.info "#{key}=#{redact(key, value[:value])} source=#{value[:source]}"
          else
            logger.info "#{key}=#{value[:value]} source=#{value[:source]}"
          end
        end
        private :log_config_inner

        def redact name, value
          if value && name.to_s.end_with?("_url")
            begin
              uri = URI(value)
              uri.password = "*****"
              uri.to_s
            rescue StandardError
              "*****"
            end
          elsif !value.nil?
            "*****"
          else
            nil
          end
        end
        private :redact
      end

      def self.included(receiver)
        receiver.extend         ClassMethods
        receiver.send :include, InstanceMethods
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
pact_broker-2.89.1 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.89.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.88.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.87.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.86.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.85.1 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.85.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.84.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.83.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb
pact_broker-2.82.0 lib/pact_broker/config/runtime_configuration_logging_methods.rb