Sha256: ee8e1da6ab4f97e4042847317663dc2ad872fc7bed45b3127dd4279b551a2550

Contents?: true

Size: 944 Bytes

Versions: 2

Compression:

Stored size: 944 Bytes

Contents

module Muchkeys
  class KeyValidator
    attr_accessor :app_client
    delegate :config, to: :app_client

    def initialize(app_client)
      @app_client = app_client
    end


    # key should pass validation rules
    def valid?(keyname)
      exists?(keyname) &&
        secret_key_has_namespace?(keyname)
    end
    alias_method :valid_key_name?, :valid?

    def secret_key_namespace(keyname)
      match = keyname.match(/^secrets\/(.*?)\/.*/)
      if match
        match[1]
      else
        ""
      end
    end

    def secret_key_has_namespace?(keyname)
      if is_secret?(keyname)
        namespace = secret_key_namespace(keyname)
        exists?(namespace)
      else
        # a plain key passes, it doesn't need a namespace
        true
      end
    end

    def is_secret?(keyname)
      keyname.match(/^secret/) != nil
    end

    private

    def exists?(keyname)
      !keyname.nil? && !keyname.empty?
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
muchkeys-0.7.1 lib/muchkeys/key_validator.rb
muchkeys-0.7.0 lib/muchkeys/key_validator.rb