Module: JSONAPIonify::Api::Resource::Definitions::RequestHeaders

Defined in:
lib/jsonapionify/api/resource/definitions/request_headers.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jsonapionify/api/resource/definitions/request_headers.rb', line 4

def self.extended(klass)
  klass.class_eval do
    extend JSONAPIonify::InheritedAttributes
    inherited_hash_attribute :request_header_definitions

    context(:request_headers, persisted: true, readonly: true) do |context|
      should_error     = false

      # Check for validity
      headers          = self.class.request_header_definitions.select do |_, v|
        v.actions.blank? || v.actions.include?(action_name)
      end
      required_headers = headers.select do |_, v|
        v.required
      end

      missing_keys =
        required_headers.keys.map(&:downcase) -
          context.request.headers.keys.map(&:downcase)
      if context.root_request? && missing_keys.present?
        should_error = true
        error :headers_missing, missing_keys
      end

      halt if should_error

      context.request.headers
    end
  end
end

Instance Method Details

#request_header(name, **options) ⇒ Object



35
36
37
# File 'lib/jsonapionify/api/resource/definitions/request_headers.rb', line 35

def request_header(name, **options)
  request_header_definitions[name] = HeaderOptions.new(name, **options)
end