lib/grape/dsl/configuration.rb in grape-0.14.0 vs lib/grape/dsl/configuration.rb in grape-0.15.0
- old
+ new
@@ -4,125 +4,12 @@
module DSL
module Configuration
extend ActiveSupport::Concern
module ClassMethods
- attr_writer :logger
-
include Grape::DSL::Settings
-
- # Set or retrive the configured logger. If none was configured, this
- # method will create a new one, logging to stdout.
- # @param logger [Object] the new logger to use
- def logger(logger = nil)
- if logger
- global_setting(:logger, logger)
- else
- global_setting(:logger) || global_setting(:logger, Logger.new($stdout))
- end
- end
-
- # Add a description to the next namespace or function.
- # @param description [String] descriptive string for this endpoint
- # or namespace
- # @param options [Hash] other properties you can set to describe the
- # endpoint or namespace. Optional.
- # @option options :detail [String] additional detail about this endpoint
- # @option options :params [Hash] param types and info. normally, you set
- # these via the `params` dsl method.
- # @option options :entity [Grape::Entity] the entity returned upon a
- # successful call to this action
- # @option options :http_codes [Array[Array]] possible HTTP codes this
- # endpoint may return, with their meanings, in a 2d array
- # @option options :named [String] a specific name to help find this route
- # @option options :headers [Hash] HTTP headers this method can accept
- # @yield a block yielding an instance context with methods mapping to
- # each of the above, except that :entity is also aliased as #success
- # and :http_codes is aliased as #failure.
- #
- # @example
- #
- # desc 'create a user'
- # post '/users' do
- # # ...
- # end
- #
- # desc 'find a user' do
- # detail 'locates the user from the given user ID'
- # failure [ [404, 'Couldn\'t find the given user' ] ]
- # success User::Entity
- # end
- # get '/user/:id' do
- # # ...
- # end
- #
- def desc(description, options = {}, &config_block)
- if block_given?
- config_class = Grape::DSL::Configuration.desc_container
-
- config_class.configure do
- description description
- end
-
- config_class.configure(&config_block)
- unless options.empty?
- warn '[DEPRECATION] Passing a options hash and a block to `desc` is deprecated. Move all hash options to block.'
- end
- options = config_class.settings
- else
- options = options.merge(description: description)
- end
-
- namespace_setting :description, options
- route_setting :description, options
- end
-
- def description_field(field, value = nil)
- if value
- description = route_setting(:description)
- description ||= route_setting(:description, {})
- description[field] = value
- else
- description = route_setting(:description)
- description[field] if description
- end
- end
-
- def unset_description_field(field)
- description = route_setting(:description)
- description.delete(field) if description
- end
- end
-
- module_function
-
- # Merge multiple layers of settings into one hash.
- def stacked_hash_to_hash(settings)
- return if settings.blank?
- settings.each_with_object({}) { |value, result| result.deep_merge!(value) }
- end
-
- # Returns an object which configures itself via an instance-context DSL.
- def desc_container
- Module.new do
- include Grape::Util::StrictHashConfiguration.module(
- :description,
- :detail,
- :params,
- :entity,
- :http_codes,
- :named,
- :headers
- )
-
- def config_context.success(*args)
- entity(*args)
- end
-
- def config_context.failure(*args)
- http_codes(*args)
- end
- end
+ include Grape::DSL::Logger
+ include Grape::DSL::Desc
end
end
end
end