Sha256: 74dc9a229487a7d3d96f6d931b634b9809d6b87dbd659dfe8b4a75736382b59f
Contents?: true
Size: 1.61 KB
Versions: 11
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
11 entries across 11 versions & 1 rubygems