Class: Lepus::Consumers::Middlewares::JSON

Inherits:
Middleware
  • Object
show all
Defined in:
lib/lepus/consumers/middlewares/json.rb

Overview

A middleware that automatically parses your JSON payload.

Instance Method Summary collapse

Constructor Details

#initialize(**opts) ⇒ JSON

Returns a new instance of JSON.

Parameters:

  • opts (Hash)

    The options for the middleware.

Options Hash (**opts):

  • :on_error (Proc) — default: Proc.new { :reject }

    A Proc to be called when an error occurs during processing.

  • :symbolize_keys (Boolean) — default: false

    Whether to symbolize the keys of your payload.



13
14
15
16
17
18
# File 'lib/lepus/consumers/middlewares/json.rb', line 13

def initialize(**opts)
  super

  @on_error = opts.fetch(:on_error, proc { :reject })
  @symbolize_keys = opts.fetch(:symbolize_keys, false)
end

Instance Method Details

#call(message, app) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/lepus/consumers/middlewares/json.rb', line 20

def call(message, app)
  begin
    parsed_payload =
      MultiJson.load(message.payload, symbolize_keys: symbolize_keys)
  rescue => e
    return on_error.call(e)
  end

  app.call(message.mutate(payload: parsed_payload))
end