Class: Lepus::Producers::Middlewares::Header

Inherits:
Middleware
  • Object
show all
Defined in:
lib/lepus/producers/middlewares/header.rb

Overview

A middleware that adds default headers to messages. Headers can be static values or dynamic procs.

Instance Method Summary collapse

Constructor Details

#initialize(**opts) ⇒ Header

Returns a new instance of Header.

Parameters:

  • opts (Hash)

    The options for the middleware.

Options Hash (**opts):

  • :defaults (Hash) — default: {}

    Default headers to add. Values can be Procs that will be called with the message.



12
13
14
15
# File 'lib/lepus/producers/middlewares/header.rb', line 12

def initialize(**opts)
  super
  @defaults = opts.fetch(:defaults, {})
end

Instance Method Details

#call(message, app) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/lepus/producers/middlewares/header.rb', line 17

def call(message, app)
  new_headers = resolve_headers(message)
  existing_headers = message.&.headers || {}
  merged_headers = new_headers.merge(existing_headers)

   = (message., headers: merged_headers)
  app.call(message.mutate(metadata: ))
end