Sha256: 3d771abf83407618651cf1d8660764f89f1be6c4805ff3af8575c393978beb5b

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require_dependency 'lina/base_controller'

module Lina
  class ApidocController < BaseController
    def index
      all_routes = Rails.application.routes.routes
      inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)

      # 过滤出所有 API 相关的路由
      api_routes = []
      @user_api_controllers = user_api_controllers
      @user_api_controllers.each do |controller|
        api_routes += inspector.send(:filter_routes, controller)
      end

      @routes = inspector.send(:collect_routes, api_routes)
      # add schema info to route
      @routes.select! do |route|
        controller, action = route[:reqs].split('#')
        route[:path].gsub!('(.:format)', '')
        route[:schema] = str2controller(controller).action_schema(action)
        str2controller(controller).action_methods.include?(action)
      end
      @_tree = Lina::Tree.new(@routes)
      @tree = @_tree.to_tree
      respond_to do |format|
        format.html
        format.json { render json: @tree }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lina-0.0.4 app/controllers/lina/apidoc_controller.rb
lina-0.0.3 app/controllers/lina/apidoc_controller.rb