Module: Philiprehberger::HeaderKit
- Defined in:
- lib/philiprehberger/header_kit.rb,
lib/philiprehberger/header_kit/cors.rb,
lib/philiprehberger/header_kit/etag.rb,
lib/philiprehberger/header_kit/link.rb,
lib/philiprehberger/header_kit/accept.rb,
lib/philiprehberger/header_kit/cookie.rb,
lib/philiprehberger/header_kit/version.rb,
lib/philiprehberger/header_kit/security.rb,
lib/philiprehberger/header_kit/forwarded.rb,
lib/philiprehberger/header_kit/negotiation.rb,
lib/philiprehberger/header_kit/retry_after.rb,
lib/philiprehberger/header_kit/content_type.rb,
lib/philiprehberger/header_kit/authorization.rb,
lib/philiprehberger/header_kit/cache_control.rb,
lib/philiprehberger/header_kit/accept_builder.rb,
lib/philiprehberger/header_kit/accept_encoding.rb,
lib/philiprehberger/header_kit/accept_language.rb
Defined Under Namespace
Modules: Accept, AcceptBuilder, AcceptEncoding, AcceptLanguage, Authorization, CacheControl, ContentType, Cookie, Cors, Etag, Forwarded, Link, Negotiation, RetryAfter, Security Classes: Error
Constant Summary collapse
- VERSION =
'0.5.0'
Class Method Summary collapse
-
.build_accept(types) ⇒ String
Build an Accept header string from an array of type hashes.
-
.build_cache_control(directives) ⇒ String
Build a Cache-Control header string from a directive hash.
-
.build_cors(**options) ⇒ Hash{String => String}
Build CORS response headers.
-
.build_link(links) ⇒ String
Build a Link header string from an array of link hashes.
-
.build_set_cookie(name, value, **options) ⇒ String
Build a Set-Cookie header string.
-
.etag_match?(header_value, resource_etag) ⇒ Boolean
Check whether an If-None-Match / If-Match header matches a resource ETag.
-
.negotiate(accept_header, available) ⇒ String?
Find the best matching media type via content negotiation.
-
.negotiate_language(header, available) ⇒ String?
Negotiate the best language from an Accept-Language header.
-
.parse_accept(header) ⇒ Array<Hash>
Parse an Accept header into structured entries sorted by quality.
-
.parse_accept_encoding(header) ⇒ Array<Hash>
Parse an Accept-Encoding header into structured entries sorted by quality.
-
.parse_accept_language(header) ⇒ Array<Hash>
Parse an Accept-Language header into structured entries sorted by quality.
-
.parse_authorization(header) ⇒ Hash
Parse an Authorization header into its components.
-
.parse_cache_control(header) ⇒ Hash{Symbol => true, Integer, String}
Parse a Cache-Control header into a directive hash.
-
.parse_content_type(header) ⇒ Hash
Parse a Content-Type header into its components.
-
.parse_cookie(header) ⇒ Hash{String => String}
Parse a Cookie header into a name-value hash.
-
.parse_cors(headers) ⇒ Hash
Parse CORS-related headers from a request.
-
.parse_forwarded(header) ⇒ Array<Hash>
Parse an RFC 7239 Forwarded header.
-
.parse_link(header) ⇒ Array<Hash>
Parse a Link header into an array of link entries.
-
.parse_retry_after(header) ⇒ Hash?
Parse a Retry-After header.
-
.parse_via(header) ⇒ Array<Hash>
Parse a Via header into structured entries.
-
.security_headers(**options) ⇒ Hash{String => String}
Generate recommended security response headers.
Class Method Details
.build_accept(types) ⇒ String
Build an Accept header string from an array of type hashes.
36 37 38 |
# File 'lib/philiprehberger/header_kit.rb', line 36 def self.build_accept(types) AcceptBuilder.build(types) end |
.build_cache_control(directives) ⇒ String
Build a Cache-Control header string from a directive hash.
85 86 87 |
# File 'lib/philiprehberger/header_kit.rb', line 85 def self.build_cache_control(directives) CacheControl.build(directives) end |
.build_cors(**options) ⇒ Hash{String => String}
Build CORS response headers.
152 153 154 |
# File 'lib/philiprehberger/header_kit.rb', line 152 def self.build_cors(**) Cors.build(**) end |
.build_link(links) ⇒ String
Build a Link header string from an array of link hashes.
127 128 129 |
# File 'lib/philiprehberger/header_kit.rb', line 127 def self.build_link(links) Link.build(links) end |
.build_set_cookie(name, value, **options) ⇒ String
Build a Set-Cookie header string.
111 112 113 |
# File 'lib/philiprehberger/header_kit.rb', line 111 def self.(name, value, **) Cookie.(name, value, **) end |
.etag_match?(header_value, resource_etag) ⇒ Boolean
Check whether an If-None-Match / If-Match header matches a resource ETag.
Accepts a single ETag, comma-separated list, weak-prefixed values (e.g. ‘W/“abc”`), or the `*` wildcard. Weak and strong ETags collapse to equality on the inner token.
189 190 191 |
# File 'lib/philiprehberger/header_kit.rb', line 189 def self.etag_match?(header_value, resource_etag) Etag.match?(header_value, resource_etag) end |
.negotiate(accept_header, available) ⇒ String?
Find the best matching media type via content negotiation.
136 137 138 |
# File 'lib/philiprehberger/header_kit.rb', line 136 def self.negotiate(accept_header, available) Negotiation.negotiate(accept_header, available) end |
.negotiate_language(header, available) ⇒ String?
Negotiate the best language from an Accept-Language header.
61 62 63 |
# File 'lib/philiprehberger/header_kit.rb', line 61 def self.negotiate_language(header, available) AcceptLanguage.negotiate(header, available) end |
.parse_accept(header) ⇒ Array<Hash>
Parse an Accept header into structured entries sorted by quality.
28 29 30 |
# File 'lib/philiprehberger/header_kit.rb', line 28 def self.parse_accept(header) Accept.parse(header) end |
.parse_accept_encoding(header) ⇒ Array<Hash>
Parse an Accept-Encoding header into structured entries sorted by quality.
44 45 46 |
# File 'lib/philiprehberger/header_kit.rb', line 44 def self.parse_accept_encoding(header) AcceptEncoding.parse(header) end |
.parse_accept_language(header) ⇒ Array<Hash>
Parse an Accept-Language header into structured entries sorted by quality.
52 53 54 |
# File 'lib/philiprehberger/header_kit.rb', line 52 def self.parse_accept_language(header) AcceptLanguage.parse(header) end |
.parse_authorization(header) ⇒ Hash
Parse an Authorization header into its components.
69 70 71 |
# File 'lib/philiprehberger/header_kit.rb', line 69 def self.(header) Authorization.parse(header) end |
.parse_cache_control(header) ⇒ Hash{Symbol => true, Integer, String}
Parse a Cache-Control header into a directive hash.
77 78 79 |
# File 'lib/philiprehberger/header_kit.rb', line 77 def self.parse_cache_control(header) CacheControl.parse(header) end |
.parse_content_type(header) ⇒ Hash
Parse a Content-Type header into its components.
93 94 95 |
# File 'lib/philiprehberger/header_kit.rb', line 93 def self.parse_content_type(header) ContentType.parse(header) end |
.parse_cookie(header) ⇒ Hash{String => String}
Parse a Cookie header into a name-value hash.
101 102 103 |
# File 'lib/philiprehberger/header_kit.rb', line 101 def self.(header) Cookie.parse(header) end |
.parse_cors(headers) ⇒ Hash
Parse CORS-related headers from a request.
144 145 146 |
# File 'lib/philiprehberger/header_kit.rb', line 144 def self.parse_cors(headers) Cors.parse(headers) end |
.parse_forwarded(header) ⇒ Array<Hash>
Parse an RFC 7239 Forwarded header.
168 169 170 |
# File 'lib/philiprehberger/header_kit.rb', line 168 def self.parse_forwarded(header) Forwarded.parse(header) end |
.parse_link(header) ⇒ Array<Hash>
Parse a Link header into an array of link entries.
119 120 121 |
# File 'lib/philiprehberger/header_kit.rb', line 119 def self.parse_link(header) Link.parse(header) end |
.parse_retry_after(header) ⇒ Hash?
Parse a Retry-After header.
Returns a hash with :seconds (Integer) for numeric values, or :date (Time) for HTTP date values. Returns nil for nil/empty input.
200 201 202 |
# File 'lib/philiprehberger/header_kit.rb', line 200 def self.parse_retry_after(header) RetryAfter.parse(header) end |