Sha256: af77533e4f464226f5c4103bc33a20c002155ff42be91ea29e5e5c4e14c9efca

Contents?: true

Size: 873 Bytes

Versions: 17

Compression:

Stored size: 873 Bytes

Contents

require 'routemaster/dirty/map'

module Routemaster
  module Middleware
    # If an event payload was place in the environment
    # (`env['routemaster.payload']`) by a previous middleware,
    # mark each corresponding entity as dirty.
    #
    # All events are passed through.
    #
    # The dirty map is passed as `:map` to the constructor and must respond to
    # `#mark` (like `Routemaster::Dirty::Map`).
    class Dirty
      def initialize(app, dirty_map: nil, **_)
        @app = app
        @map = dirty_map || Routemaster::Dirty::Map.new
      end

      def call(env)
        env['routemaster.dirty'] = dirty = []

        env.fetch('routemaster.payload', []).each do |event|
          next if event['type'] == 'noop'
          next unless @map.mark(event['url'])
          dirty << event['url']
        end
        @app.call(env)
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
routemaster-drain-3.6.2 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.6.1 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.6.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.5.1 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.5.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.4.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.3.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.2.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.1.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.0.3 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.0.2 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.0.1 lib/routemaster/middleware/dirty.rb
routemaster-drain-3.0.0 lib/routemaster/middleware/dirty.rb
routemaster-drain-2.5.4 lib/routemaster/middleware/dirty.rb
routemaster-drain-2.5.3 lib/routemaster/middleware/dirty.rb
routemaster-drain-2.5.2 lib/routemaster/middleware/dirty.rb
routemaster-drain-2.5.1 lib/routemaster/middleware/dirty.rb