class Lowkiq::Web::Action
Public Class Methods
new(request_method, segments, &body)
click to toggle source
# File lib/lowkiq/web/action.rb, line 16 def initialize(request_method, segments, &body) @request_method = request_method @url_pattern = self.class.segments_to_regex(segments) @body = body end
segments_to_regex(segments)
click to toggle source
# File lib/lowkiq/web/action.rb, line 4 def self.segments_to_regex(segments) prepared = segments.map do |segment| case segment when Symbol "(?<#{segment}>[^\/]+)" else segment end end.join( '/' ) Regexp.new '\A' + '/' + prepared + '\z' end
Public Instance Methods
call(req)
click to toggle source
# File lib/lowkiq/web/action.rb, line 22 def call(req) return if @request_method != req.request_method match = @url_pattern.match req.path_info return unless match data = @body.call req, match [200, {}, [JSON.generate(data)]] end