Sha256: 43ea86087b9ec657a46950b7b7687e8f6a9318eac8b807a1caf698908b54b6a8

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

module Rack::App::SingletonMethods::RouteHandling

  def router
    @router ||= Rack::App::Router.new
  end

  protected

  def root(endpoint_path)
    %W[GET POST PUT DELETE OPTIONS PATCH HEAD].each do |request_method|
      endpoint = router.fetch_endpoint(request_method, endpoint_path)
      next if endpoint == Rack::App::Endpoint::NOT_FOUND
      router.register_endpoint!(request_method, '/', 'Root endpoint', endpoint)
    end
  end

  def description(*description_texts)
    @last_description = description_texts.join("\n")
  end

  alias desc description

  def add_route(request_method, request_path, &block)

    request_path = ::Rack::App::Utils.join(@namespaces, request_path)

    builder = Rack::Builder.new
    middlewares.each do |builder_block|
      builder_block.call(builder)
    end

    properties = {
        :user_defined_logic => block,
        :request_method => request_method,
        :request_path => request_path,

        :default_headers => headers,
        :error_handler => error,
        :description => @last_description,
        :serializer => serializer,
        :middleware => builder,
        :app_class => self
    }


    endpoint = Rack::App::Endpoint.new(properties)
    router.register_endpoint!(request_method, request_path, @last_description, endpoint)

    @last_description = nil
    return endpoint

  end

  def namespace(request_path_namespace)
    return unless block_given?
    @namespaces ||= []
    @namespaces.push(request_path_namespace)
    yield
    @namespaces.pop
    nil
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-app-3.0.0.alpha lib/rack/app/singleton_methods/route_handling.rb