Module: TIMEx::Propagation::HttpHeader
Overview
Helpers for reading and writing the Deadline::HEADER_NAME wire format on Rack env and generic header maps.
Constant Summary collapse
- HEADER_NAME =
Deadline::HEADER_NAME
- RACK_HEADER_KEY =
"HTTP_X_TIMEX_DEADLINE"
Instance Method Summary collapse
-
#from_headers(headers) ⇒ Deadline?
Resolves a deadline from a case-insensitive header map when possible.
-
#from_rack_env(env) ⇒ Deadline?
Parsed deadline or
nil. -
#inject(headers, deadline, prefer: :remaining) ⇒ Hash
Writes
deadlineintoheadersunder HEADER_NAME.
Instance Method Details
#from_headers(headers) ⇒ Deadline?
Resolves a deadline from a case-insensitive header map when possible.
27 28 29 30 31 32 33 34 |
# File 'lib/timex/propagation/http_header.rb', line 27 def from_headers(headers) return Deadline.from_header(nil) if headers.nil? return Deadline.from_header(headers[HEADER_NAME]) if headers.respond_to?(:key?) && headers.key?(HEADER_NAME) pair = headers.find { |k, _| k.to_s.casecmp?(HEADER_NAME) } if headers.respond_to?(:find) Deadline.from_header(pair&.last) end |
#from_rack_env(env) ⇒ Deadline?
Returns parsed deadline or nil.
19 20 21 |
# File 'lib/timex/propagation/http_header.rb', line 19 def from_rack_env(env) Deadline.from_header(env[RACK_HEADER_KEY]) end |
#inject(headers, deadline, prefer: :remaining) ⇒ Hash
Writes deadline into headers under HEADER_NAME.
42 43 44 45 |
# File 'lib/timex/propagation/http_header.rb', line 42 def inject(headers, deadline, prefer: :remaining) headers[HEADER_NAME] = deadline.to_header(prefer:) headers end |