Sha256: 7ee3d2cc1dbec81c56e16107a5dd6f012eb0fef7c22cc3ba0c4a66b67141bae9

Contents?: true

Size: 1.19 KB

Versions: 6

Compression:

Stored size: 1.19 KB

Contents

module Rack::App::SingletonMethods::RouteHandling

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

  protected

  def root(endpoint_path)
    alias_endpoint('/', endpoint_path)
  end

  def route_registration_properties
    @route_registration_properties ||= {}
  end

  def description(*description_texts)
    route_registration_properties[:description]= description_texts.join("\n")
  end

  alias desc description

  def add_route(request_method, request_path, callable)

    router.register_endpoint!(
      Rack::App::Endpoint.new({
        :app_class => self,
        :callable => callable,
        :payload => payload,
        :error_handler => error,
        :request_method => request_method,
        :route => route_registration_properties.dup,
        :endpoint_specific_middlewares => next_endpoint_middlewares.dup,
        :request_path => ::Rack::App::Utils.join(@namespaces, request_path)
      })
    )

    next_endpoint_middlewares.clear
    route_registration_properties.clear
    return nil

  end

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

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rack-app-6.3.3 lib/rack/app/singleton_methods/route_handling.rb
rack-app-6.3.2 lib/rack/app/singleton_methods/route_handling.rb
rack-app-6.3.1 lib/rack/app/singleton_methods/route_handling.rb
rack-app-6.3.0 lib/rack/app/singleton_methods/route_handling.rb
rack-app-6.2.0 lib/rack/app/singleton_methods/route_handling.rb
rack-app-6.1.0 lib/rack/app/singleton_methods/route_handling.rb