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