class Dingding::Notifier::PayloadMiddleware::Stack

Attributes

notifier[R]
stack[R]

Public Class Methods

new(notifier) click to toggle source
# File lib/dingding-notifier/payload_middleware/stack.rb, line 10
def initialize notifier
  @notifier = notifier
  @stack    = []
end

Public Instance Methods

call(payload={}) click to toggle source
# File lib/dingding-notifier/payload_middleware/stack.rb, line 28
def call payload={}
  result = stack.inject payload do |pld, middleware|
      middleware.call(pld)
  end
  result
end
set(*middlewares) click to toggle source
# File lib/dingding-notifier/payload_middleware/stack.rb, line 15
def set *middlewares

  middlewares =
    if middlewares.length == 1 && middlewares.first.is_a?(Hash)
      middlewares.first
    else
      middlewares.flatten
    end
  @stack = middlewares.map do |key, opts|
    PayloadMiddleware.registry.fetch(key).new(*[notifier, opts].compact)
  end
end