Class: Praxis::ActionDefinition::HeadersDSLCompiler

Inherits:
Attributor::DSLCompiler
  • Object
show all
Defined in:
lib/praxis/action_definition/headers_dsl_compiler.rb

Instance Method Summary collapse

Instance Method Details

#header(name, val = nil, **options) ⇒ Object

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)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/praxis/action_definition/headers_dsl_compiler.rb', line 15

def header(name, val = nil, **options)
  return key name, val, **options if val.is_a?(Class)

  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