Sha256: 2b1de8f09e01f1ff9331b63341e9dd79e678019559b52164ca349e23e5cc7200
Contents?: true
Size: 1.75 KB
Versions: 2
Compression:
Stored size: 1.75 KB
Contents
# frozen_string_literal: true module WeakSwaggerParameters module Controller extend ActiveSupport::Concern module ClassMethods def add_to_doc_section(doc_section) @doc_sections ||= [] @doc_sections << doc_section end def in_doc_section?(doc_section) (@doc_sections || []).include?(doc_section) end def api(method, path, description, &block) api_docs = WeakSwaggerParameters::Definitions::Api.new(method, path, description, &block) api_docs.apply_validations(self) api_docs.apply_docs(self) end end included do extend WeakParameters::Controller include Swagger::Blocks rescue_from WeakParameters::ValidationError, with: :handle_param_validation_error def render_docs(docs_section) ensure_loaded controllers = controllers_in_docs_section(docs_section) render json: Swagger::Blocks.build_root_json(controllers) end def handle_param_validation_error(e) render json: { message: e.message }, status: 400 end private def controllers_in_docs_section(docs_section) controllers = [] ObjectSpace.each_object(Class) do |klass| if controller?(klass) && in_docs_section?(klass, docs_section) controllers << klass end end controllers end def ensure_loaded Rails.application.eager_load! if !Rails.configuration.eager_load || !Rails.configuration.cache_classes end def controller?(klass) klass.ancestors.include?(AbstractController::Base) end def in_docs_section?(klass, docs_section) klass.respond_to?(:in_doc_section?) && klass.in_doc_section?(docs_section) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
weak_swagger_parameters-0.1.1 | lib/weak_swagger_parameters/controller.rb |
weak_swagger_parameters-0.0.1 | lib/weak_swagger_parameters/controller.rb |