Sha256: 0e8c02a1c25d6d2f57850c1788531c9d613965d466a8152d927e6880f32568e5
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true module Wayfarer module Middleware class Router module API def self.included(base) base.include(InstanceMethods) base.extend(ClassMethods) end module InstanceMethods def steer [] end def params task.metadata.params end end module ClassMethods def router @router ||= Wayfarer::Routing::Router.new end def route(&block) router.draw(&block) if block_given? end def steer(&block) define_method(:steer) { block.call(task) } end end end def call(task) router = task.job.class.router url = Addressable::URI.parse(task.url) case result = router.invoke(url, task.job.steer) when Routing::Result::Mismatch return when Routing::Result::Match task.metadata.action = result.action task.metadata.params = ActiveSupport::HashWithIndifferentAccess.new(result.params) end yield if block_given? end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
wayfarer-0.4.3 | lib/wayfarer/middleware/router.rb |
wayfarer-0.4.2 | lib/wayfarer/middleware/router.rb |