Sha256: 55b51f3fb47be7b0b43794648b2153899c4386e439173e5fdd2c75f65487ca66

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

module SecretServer
  module Commands
    # Command to control caching of Secret values
    module Cache
      # rubocop:disable Naming/ConstantName
      StrategyNever = 0
      StrategyServerThenCache = 1
      StrategyCacheThenServer = 2
      StrategyCacheThenServerAllowExpired = 3
      # rubocop:enable Naming/ConstantName

      def cache_strategy
        stdout, * = sdkclient_exec('cache', '-c')
        result = /Strategy : (\w+)(?:, Max Age : (\d+) minutes)?/.match(stdout)
        strategy = SecretServer::SdkClient.const_get("Strategy#{result[1]}")
        [strategy, result[2].to_i]
      end

      def cache_strategy=(value)
        strategy, age = value.is_a?(Array) ? value : [value, nil]
        validate_cache_strategy_args(strategy, age)
        args = ['cache', '-s', strategy.to_s]
        args += ['-a', age.to_s] unless age.nil?
        sdkclient_exec(*args)
      end

      def cache_age
        cache_strategy[1]
      end

      def cache_age=(age)
        unless age.is_a?(Integer) && age >= 0
          raise ArgumentError, 'age must be a nonnegative integer'
        end
        sdkclient_exec('cache', '-a', age.to_s)
      end

      def cache_clear!
        sdkclient_exec('cache', '-b')
      end

      private

      def validate_cache_strategy_args(strategy, age)
        unless strategy.is_a? Integer
          raise ArgumentError, 'strategy must be an integer'
        end
        unless (0..3).cover? strategy
          raise ArgumentError, 'strategy must be in the range 0 to 3 inclusive'
        end
        unless age.nil? || age.is_a?(Integer) && age >= 0
          raise ArgumentError, 'age must be a nonnegative integer'
        end
        true
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
secret_server-0.1.0 lib/secret_server/commands/cache.rb