Sha256: eb99f906c1a550547a815c3a0c32d8eb1b1f37e7511ddb30c02b4597881b1b1b

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 KB

Contents

# Copyright (c) 2022 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
# frozen_string_literal: true

module Contrast
  module Config
    # Api Proxy keys configuration
    class ApiProxyConfiguration < BaseConfiguration
      # @return [String] proxy url
      attr_reader :url

      def initialize hsh = {}
        @enable = traverse_config(hsh, :enable)
        @url = traverse_config(hsh, :url)
        @configuration_map = {}
        build_configuration_map
      end

      # @return [Boolean, false]
      def enable
        @enable.nil? ? false : @enable
      end

      def enable= value
        self['enable'] = value
      end

      def url= value
        self['url'] = value
      end

      # TODO: RUBY-1493 MOVE TO BASE CONFIG

      def []= key, value
        instance_variable_set("@#{ key }".to_sym, value)
        @configuration_map[key] = value
      end

      def [] key
        send(key.to_sym)
      end

      # Traverse the given entity to build out the configuration graph.
      #
      # The values will be either a hash, indicating internal nodes to
      # traverse, or a value to set or the EMPTY_VALUE symbol, indicating a
      # leaf node.
      #
      # The spec_key are the Contrast defined keys based on the instance variables of
      # a given configuration.
      def traverse_config values, spec_key
        internal_nodes = values.cs__respond_to?(:has_key?)
        val = internal_nodes ? value_from_key_config(spec_key, values) : nil
        val == EMPTY_VALUE ? nil : val
      end

      def build_configuration_map
        instance_variables.each do |key|
          str_key = key.to_s.tr('@', '')
          next if str_key == 'configuration_map'

          @configuration_map[str_key] = send(str_key.to_sym)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
contrast-agent-5.3.0 lib/contrast/config/api_proxy_configuration.rb
contrast-agent-5.2.0 lib/contrast/config/api_proxy_configuration.rb