module Grape::DSL::Desc
def desc(description, options = nil, &config_block)
- Yield: - a block yielding an instance context with methods mapping to
Options Hash:
(**options)
-
:tags
(Array[String]
) -- a list of tags -
:security
(Array[Hash]
) -- a list of security schemes -
:consumes
(Array[String]
) -- a list of MIME types the endpoint consume -
:produces
(Array[String]
) -- a list of MIME types the endpoint produce -
:nickname
(String
) -- nickname of the endpoint -
:is_array
(Boolean
) -- response entity is array or not -
:deprecated
(Boolean
) -- deprecate the endpoint or not -
:hidden
(Boolean
) -- hide the endpoint or not -
:headers
(Hash
) -- HTTP headers this method can accept -
:body_name
(String
) -- override the autogenerated body name param -
:named
(String
) -- a specific name to help find this route -
:http_codes
(Array[Array]
) -- possible HTTP codes this -
:entity
(Grape::Entity
) -- the entity returned upon a -
:params
(Hash
) -- param types and info. normally, you set -
:summary
(String
) -- summary for this endpoint -
:detail
(String
) -- additional detail about this endpoint
Parameters:
-
options
(Hash
) -- other properties you can set to describe the -
description
(String
) -- descriptive string for this endpoint
def desc(description, options = nil, &config_block) opts = if config_block desc_container(endpoint_configuration).then do |config_class| config_class.configure do description(description) end config_class.configure(&config_block) config_class.settings end else options&.merge(description: description) || { description: description } end namespace_setting :description, opts route_setting :description, opts end
def desc_container(endpoint_configuration)
def desc_container(endpoint_configuration) Module.new do include Grape::Util::StrictHashConfiguration.module(*ROUTE_ATTRIBUTES) config_context.define_singleton_method(:configuration) do endpoint_configuration end def config_context.success(*args) entity(*args) end def config_context.failure(*args) http_codes(*args) end end end
def endpoint_configuration
def endpoint_configuration return {} unless defined?(configuration) if configuration.respond_to?(:evaluate) configuration.evaluate # Within `given` or `mounted blocks` the configuration is already evaluated elsif configuration.is_a?(Hash) configuration end end