Sha256: 55847eb3f1a1f9d4d75c7ed5da806fb1cf6ef4ebacb561dc9e04062f173f4003
Contents?: true
Size: 1.3 KB
Versions: 9
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true 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) 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 end end end
Version data entries
9 entries across 9 versions & 1 rubygems