Sha256: 1848036ea76376ef04c9156fad682da8bb03c4a2b629dcc38349404d28260334

Contents?: true

Size: 1.14 KB

Versions: 14

Compression:

Stored size: 1.14 KB

Contents

module JSONAPIonify::Api
  module Resource::Definitions::RequestHeaders

    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

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

  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
jsonapionify-0.11.11 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.10 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.9 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.8 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.7 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.6 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.5 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.11.0 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.10.2 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.10.1 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.10.0 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.9.3 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.9.2 lib/jsonapionify/api/resource/definitions/request_headers.rb
jsonapionify-0.9.1 lib/jsonapionify/api/resource/definitions/request_headers.rb