class WaterDrop::Middleware
Simple middleware layer for manipulating messages prior to their validation
Public Class Methods
new()
click to toggle source
# File lib/waterdrop/middleware.rb, line 6 def initialize @mutex = Mutex.new @steps = [] end
Public Instance Methods
append(step)
click to toggle source
Register given middleware as the last one in the chain @param step [#call] step that needs to return the message
# File lib/waterdrop/middleware.rb, line 44 def append(step) @mutex.synchronize do @steps.append step end end
prepend(step)
click to toggle source
Register given middleware as the first one in the chain @param step [#call] step that needs to return the message
# File lib/waterdrop/middleware.rb, line 36 def prepend(step) @mutex.synchronize do @steps.prepend step end end
run(message)
click to toggle source
Runs middleware on a single message prior to validation
@param message [Hash] message hash @return [Hash] message hash. Either the same if transformed in place, or a copy if modified
into a new object.
@note You need to decide yourself whether you don’t use the message hash data anywhere else
and you want to save on memory by modifying it in place or do you want to do a deep copy
# File lib/waterdrop/middleware.rb, line 18 def run(message) @steps.each do |step| message = step.call(message) end message end
run_many(messages)
click to toggle source
@param messages [Array<Hash>] messages on which we want to run middlewares @return [Array<Hash>] transformed messages
# File lib/waterdrop/middleware.rb, line 28 def run_many(messages) messages.map do |message| run(message) end end