Class: Html2rss::Config::RequestHeaders
- Inherits:
-
Object
- Object
- Html2rss::Config::RequestHeaders
- Defined in:
- lib/html2rss/config/request_headers.rb
Overview
Normalizes HTTP headers for outgoing requests. Ensures a browser-like baseline while respecting caller overrides.
Constant Summary collapse
- DEFAULT_ACCEPT =
%w[ text/html application/xhtml+xml application/xml;q=0.9 image/avif image/webp image/apng */*;q=0.8 ].join(',')
- DEFAULT_USER_AGENT =
[ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'AppleWebKit/537.36 (KHTML, like Gecko)', 'Chrome/123.0.0.0', 'Safari/537.36' ].join(' ')
- DEFAULT_HEADERS =
{ 'Accept' => DEFAULT_ACCEPT, 'Cache-Control' => 'max-age=0', 'Connection' => 'keep-alive', 'Sec-Fetch-Dest' => 'document', 'Sec-Fetch-Mode' => 'navigate', 'Sec-Fetch-Site' => 'none', 'Sec-Fetch-User' => '?1', 'Upgrade-Insecure-Requests' => '1', 'User-Agent' => DEFAULT_USER_AGENT }.freeze
Class Method Summary collapse
-
.browser_defaults ⇒ Hash<String, String>
The unmodified default header set.
-
.normalize(headers, channel_language:, url:) ⇒ Hash<String, String>
Normalizes the provided headers while applying Html2rss defaults.
Instance Method Summary collapse
-
#initialize(headers, channel_language:, url:) ⇒ RequestHeaders
constructor
A new instance of RequestHeaders.
-
#to_h ⇒ Hash<String, String>
Normalized HTTP headers.
Constructor Details
#initialize(headers, channel_language:, url:) ⇒ RequestHeaders
Returns a new instance of RequestHeaders.
57 58 59 60 61 |
# File 'lib/html2rss/config/request_headers.rb', line 57 def initialize(headers, channel_language:, url:) @headers = headers @channel_language = channel_language @url = url end |
Class Method Details
.browser_defaults ⇒ Hash<String, String>
Returns the unmodified default header set.
41 42 43 |
# File 'lib/html2rss/config/request_headers.rb', line 41 def browser_defaults DEFAULT_HEADERS.dup end |
.normalize(headers, channel_language:, url:) ⇒ Hash<String, String>
Normalizes the provided headers while applying Html2rss defaults.
52 53 54 |
# File 'lib/html2rss/config/request_headers.rb', line 52 def normalize(headers, channel_language:, url:) new(headers || {}, channel_language:, url:).to_h end |
Instance Method Details
#to_h ⇒ Hash<String, String>
Returns normalized HTTP headers.
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/html2rss/config/request_headers.rb', line 65 def to_h defaults = DEFAULT_HEADERS.dup normalized = normalize_custom_headers(headers) accept_override = normalized.delete('Accept') defaults.merge!(normalized) defaults['Accept'] = normalize_accept(accept_override) defaults['Accept-Language'] = build_accept_language defaults['Host'] ||= request_host defaults.compact end |