Sha256: 7f3d212049dd7fdcb91a3075c852de38ce76002f38340687a5127c628039c16c
Contents?: true
Size: 1.61 KB
Versions: 8
Compression:
Stored size: 1.61 KB
Contents
module Praxis class ActionDefinition class HeadersDSLCompiler < Attributor::DSLCompiler # it allows to define expectations on incoming headers. For example: # header :X_SpecialCookie => implies the header is required # header :X_Something, /matching_this/ => implies that if the name header exists, it should match the regexp # header :X_A_Header, "Specific String" => implies that the value matches the string exactly # In any of the cases, other supported options might be passed # header :X_Something, /matching_this/ , # required: true => to make it required # description: "lorem ipsum" => to describe it (like any other attribute) def header(name, val=nil, **options) if val.kind_of?(Class) return key name, val, **options end case val when Regexp options[:regexp] = val when String options[:values] = [val] when nil # Defining the existence without any other options can only mean that it is required (otherwise it is a useless definition) options[:required] = true if options.empty? end key name , String, **options end # Override the attribute to really call "key" in the hash (for temporary backwards compat) def attribute(name, attr_type=nil, **opts, &block) warn "[DEPRECATION] `attribute` is deprecated when defining headers. Please use `key` instead." key(name, attr_type, **opts, &block) end end end end
Version data entries
8 entries across 8 versions & 1 rubygems