Module: Grape::DSL::RequestResponse::ClassMethods
- Defined in:
- lib/grape/dsl/request_response.rb
Instance Method Summary collapse
-
#content_type(key, val) ⇒ Object
Specify additional content-types, e.g.: content_type :xls, 'application/vnd.ms-excel'.
-
#content_types ⇒ Object
All available content types.
-
#default_error_formatter(new_formatter_name = nil) ⇒ Object
Specify a default error formatter.
-
#default_error_status(new_status = nil) ⇒ Object
Specify the default status code for errors.
-
#default_format(new_format = nil) ⇒ Object
Specify the default format for the API's serializers.
- #error_formatter(format, options) ⇒ Object
-
#format(new_format = nil) ⇒ Object
Specify the format for the API's serializers.
-
#formatter(content_type, new_formatter) ⇒ Object
Specify a custom formatter for a content-type.
-
#parser(content_type, new_parser) ⇒ Object
Specify a custom parser for a content-type.
-
#represent(model_class, options) ⇒ Object
Allows you to specify a default representation entity for a class.
-
#rescue_from(*exception_classes, options = {}) ⇒ Object
Allows you to rescue certain exceptions that occur to return a grape error rather than raising all the way to the server level.
Instance Method Details
#content_type(key, val) ⇒ Object
Specify additional content-types, e.g.: content_type :xls, 'application/vnd.ms-excel'
63 64 65 |
# File 'lib/grape/dsl/request_response.rb', line 63 def content_type(key, val) settings.imbue(:content_types, key.to_sym => val) end |
#content_types ⇒ Object
All available content types.
68 69 70 |
# File 'lib/grape/dsl/request_response.rb', line 68 def content_types Grape::ContentTypes.content_types_for(settings[:content_types]) end |
#default_error_formatter(new_formatter_name = nil) ⇒ Object
Specify a default error formatter.
42 43 44 45 46 47 48 49 |
# File 'lib/grape/dsl/request_response.rb', line 42 def default_error_formatter(new_formatter_name = nil) if new_formatter_name new_formatter = Grape::ErrorFormatter::Base.formatter_for(new_formatter_name, {}) set(:default_error_formatter, new_formatter) else settings[:default_error_formatter] end end |
#default_error_status(new_status = nil) ⇒ Object
Specify the default status code for errors.
73 74 75 |
# File 'lib/grape/dsl/request_response.rb', line 73 def default_error_status(new_status = nil) new_status ? set(:default_error_status, new_status) : settings[:default_error_status] end |
#default_format(new_format = nil) ⇒ Object
Specify the default format for the API's serializers.
May be :json
or :txt
(default).
11 12 13 |
# File 'lib/grape/dsl/request_response.rb', line 11 def default_format(new_format = nil) new_format ? set(:default_format, new_format.to_sym) : settings[:default_format] end |
#error_formatter(format, options) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/grape/dsl/request_response.rb', line 51 def error_formatter(format, ) if .is_a?(Hash) && .key?(:with) formatter = [:with] else formatter = end settings.imbue(:error_formatters, format.to_sym => formatter) end |
#format(new_format = nil) ⇒ Object
Specify the format for the API's serializers.
May be :json
, :xml
, :txt
, etc.
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/grape/dsl/request_response.rb', line 17 def format(new_format = nil) if new_format set(:format, new_format.to_sym) # define the default error formatters set(:default_error_formatter, Grape::ErrorFormatter::Base.formatter_for(new_format, {})) # define a single mime type mime_type = content_types[new_format.to_sym] raise Grape::Exceptions::MissingMimeType.new(new_format) unless mime_type settings.imbue(:content_types, new_format.to_sym => mime_type) else settings[:format] end end |
#formatter(content_type, new_formatter) ⇒ Object
Specify a custom formatter for a content-type.
32 33 34 |
# File 'lib/grape/dsl/request_response.rb', line 32 def formatter(content_type, new_formatter) settings.imbue(:formatters, content_type.to_sym => new_formatter) end |
#parser(content_type, new_parser) ⇒ Object
Specify a custom parser for a content-type.
37 38 39 |
# File 'lib/grape/dsl/request_response.rb', line 37 def parser(content_type, new_parser) settings.imbue(:parsers, content_type.to_sym => new_parser) end |
#represent(model_class, options) ⇒ Object
Allows you to specify a default representation entity for a
class. This allows you to map your models to their respective
entities once and then simply call present
with the model.
Note that Grape will automatically go up the class ancestry to
try to find a representing entity, so if you, for example, define
an entity to represent Object
then all presented objects will
bubble up and utilize the entity provided on that represent
call.
145 146 147 148 |
# File 'lib/grape/dsl/request_response.rb', line 145 def represent(model_class, ) raise Grape::Exceptions::InvalidWithOptionForRepresent.new unless [:with] && [:with].is_a?(Class) imbue(:representations, model_class => [:with]) end |
#rescue_from(*exception_classes, options = {}) ⇒ Object
Allows you to rescue certain exceptions that occur to return a grape error rather than raising all the way to the server level.
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/grape/dsl/request_response.rb', line 97 def rescue_from(*args, &block) if args.last.is_a?(Proc) handler = args.pop elsif block_given? handler = block end = args.last.is_a?(Hash) ? args.pop : {} handler ||= proc { [:with] } if .key?(:with) if args.include?(:all) set(:rescue_all, true) imbue :all_rescue_handler, handler else handler_type = case [:rescue_subclasses] when nil, true :rescue_handlers else :base_only_rescue_handlers end imbue handler_type, Hash[args.map { |arg| [arg, handler] }] end imbue(:rescue_options, ) end |