Sha256: 7951f6d38b4bcc689005bd81cc5010e5e8b8d4d343849b8fb01c9d30c21a5ae6
Contents?: true
Size: 1.77 KB
Versions: 9
Compression:
Stored size: 1.77 KB
Contents
module Praxis class RoutingConfig attr_reader :route attr_reader :version attr_reader :base def initialize(version:'n/a'.freeze, base: '', prefix:[], &block) @version = version @base = base @prefix_segments = Array(prefix) @route = nil if block_given? instance_eval(&block) end end def clear! @prefix_segments = [] end def prefix(prefix=nil) return @prefix_segments.join.gsub('//','/') if prefix.nil? case prefix when '' @prefix_segments = [] when ABSOLUTE_PATH_REGEX @prefix_segments = Array(prefix[1..-1]) else @prefix_segments << prefix end end def options(path, opts={}) add_route 'OPTIONS', path, opts end def get(path, opts={}) add_route 'GET', path, opts end def head(path, opts={}) add_route 'HEAD', path, opts end def post(path, opts={}) add_route 'POST', path, opts end def put(path, opts={}) add_route 'PUT', path, opts end def delete(path, opts={}) add_route 'DELETE', path, opts end def trace(path, opts={}) add_route 'TRACE', path, opts end def connect(path, opts={}) add_route 'CONNECT', path, opts end def patch(path, opts={}) add_route 'PATCH', path, opts end def any(path, opts={}) add_route 'ANY', path, opts end ABSOLUTE_PATH_REGEX = %r|^//| def add_route(verb, path, options={}) unless path =~ ABSOLUTE_PATH_REGEX path = prefix + path end prefixed_path = path.gsub('//','/') path = (base + path).gsub('//','/') pattern = Mustermann.new(path, **{ignore_unknown_options: true}.merge( options )) @route = Route.new(verb, pattern, version, prefixed_path: prefixed_path, **options) end end end
Version data entries
9 entries across 9 versions & 1 rubygems