-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathheaders.rb
61 lines (53 loc) · 1.74 KB
/
headers.rb
1
2
3
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# frozen_string_literal: true
require 'grape/util/lazy_object'
module Grape
module Http
module Headers
# https://github.com/rack/rack/blob/master/lib/rack.rb
HTTP_VERSION = 'HTTP_VERSION'
PATH_INFO = 'PATH_INFO'
REQUEST_METHOD = 'REQUEST_METHOD'
QUERY_STRING = 'QUERY_STRING'
CONTENT_TYPE = 'Content-Type'
GET = 'GET'
POST = 'POST'
PUT = 'PUT'
PATCH = 'PATCH'
DELETE = 'DELETE'
HEAD = 'HEAD'
OPTIONS = 'OPTIONS'
SUPPORTED_METHODS = [GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS].freeze
SUPPORTED_METHODS_WITHOUT_OPTIONS = Grape::Util::LazyObject.new { [GET, POST, PUT, PATCH, DELETE, HEAD].freeze }
HTTP_ACCEPT_VERSION = 'HTTP_ACCEPT_VERSION'
X_CASCADE = 'X-Cascade'
HTTP_TRANSFER_ENCODING = 'HTTP_TRANSFER_ENCODING'
HTTP_ACCEPT = 'HTTP_ACCEPT'
FORMAT = 'format'
HTTP_HEADERS = Grape::Util::LazyObject.new do
common_http_headers = %w[
Version
Host
Connection
Cache-Control
Dnt
Upgrade-Insecure-Requests
User-Agent
Sec-Fetch-Dest
Accept
Sec-Fetch-Site
Sec-Fetch-Mode
Sec-Fetch-User
Accept-Encoding
Accept-Language
Cookie
].freeze
common_http_headers.each_with_object({}) do |header, response|
response["HTTP_#{header.upcase.tr('-', '_')}"] = header
end.freeze
end
def self.find_supported_method(route_method)
Grape::Http::Headers::SUPPORTED_METHODS.detect { |supported_method| supported_method.casecmp(route_method).zero? }
end
end
end
end