lib/jsonapionify/api/resource/definitions/request_headers.rb in jsonapionify-0.0.1.pre vs lib/jsonapionify/api/resource/definitions/request_headers.rb in jsonapionify-0.9.0

- old
+ new

@@ -4,69 +4,10 @@ def self.extended(klass) klass.class_eval do extend JSONAPIonify::InheritedAttributes inherited_hash_attribute :request_header_definitions - # Standard HTTP Headers - # https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Request_fields - request_header 'accept' - request_header 'accept-charset' - request_header 'accept-encoding' - request_header 'accept-language' - request_header 'accept-datetime' - request_header 'authorization' - request_header 'cache-control' - request_header 'connection' - request_header 'cookie' - request_header 'content-length' - request_header 'content-md5' - request_header 'content-type' - request_header 'date' - request_header 'expect' - request_header 'from' - request_header 'host' - request_header 'if-match' - request_header 'if-modified-since' - request_header 'if-none-match' - request_header 'if-range' - request_header 'if-unmodified-since' - request_header 'max-forwards' - request_header 'origin' - request_header 'pragma' - request_header 'proxy-authorization' - request_header 'range' - request_header 'referer' - request_header 'te' - request_header 'user-agent' - request_header 'upgrade' - request_header 'via' - request_header 'warning' - - # Non-Standard, but widely used HTTP headers - request_header 'x-requested-with' - request_header 'dnt' - request_header 'x-forwarded-for' - request_header 'x-forwarded-host' - request_header 'x-forwarded-proto' - request_header 'front-end-https' - request_header 'x-att-device-id' - request_header 'x-wap-profile' - request_header 'proxy-connection' - request_header 'x-uidh' - request_header 'upgrade-insecure-requests' - - # Don't allow method overrides - # request_header 'x-http-method-override' - - # Don't allow CSRF tokens, as they should not be used - # in the api by default - # request_header 'x-csrf-token' - - before do |context| - context.request_headers # pull request_headers so they verify - end - context(:request_headers) do |context| should_error = false # Check for validity headers = self.class.request_header_definitions.select do |_, v| @@ -74,22 +15,15 @@ end required_headers = headers.select do |_, v| v.required end - if (invalid_keys = context.request.headers.keys.map(&:downcase) - headers.keys.map(&:downcase)).present? - should_error = true - invalid_keys.each do |key| - error :header_not_permitted, key - end - end - if (missing_keys = required_headers.keys.map(&:downcase) - context.request.headers.keys.map(&:downcase)).present? should_error = true error :headers_missing, missing_keys end - raise error_exception if should_error + raise Errors::RequestError if should_error context.request.headers end end end