Module: Grape::DSL::RequestResponse
- Included in:
- API::Instance
- 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 = nil, with: nil) ⇒ 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, with:) ⇒ Object
Allows you to specify a default representation entity for a class.
- #rescue_from(*exception_classes, **options) ⇒ Object
Instance Method Details
#content_type(key, val) ⇒ Object
Specify additional content-types, e.g.:
content_type :xls, 'application/vnd.ms-excel'
54 55 56 |
# File 'lib/grape/dsl/request_response.rb', line 54 def content_type(key, val) inheritable_setting.namespace_stackable[:content_types] = { key.to_sym => val } end |
#content_types ⇒ Object
All available content types.
59 60 61 62 |
# File 'lib/grape/dsl/request_response.rb', line 59 def content_types c_types = inheritable_setting.namespace_stackable_with_hash(:content_types) Grape::ContentTypes.content_types_for c_types end |
#default_error_formatter(new_formatter_name = nil) ⇒ Object
Specify a default error formatter.
40 41 42 43 44 45 |
# File 'lib/grape/dsl/request_response.rb', line 40 def default_error_formatter(new_formatter_name = nil) return inheritable_setting.namespace_inheritable[:default_error_formatter] if new_formatter_name.nil? new_formatter = Grape::ErrorFormatter.formatter_for(new_formatter_name) inheritable_setting.namespace_inheritable[:default_error_formatter] = new_formatter end |
#default_error_status(new_status = nil) ⇒ Object
Specify the default status code for errors.
65 66 67 68 69 |
# File 'lib/grape/dsl/request_response.rb', line 65 def default_error_status(new_status = nil) return inheritable_setting.namespace_inheritable[:default_error_status] if new_status.nil? inheritable_setting.namespace_inheritable[:default_error_status] = new_status end |
#default_format(new_format = nil) ⇒ Object
Specify the default format for the API’s serializers. May be ‘:json` or `:txt` (default).
8 9 10 11 12 |
# File 'lib/grape/dsl/request_response.rb', line 8 def default_format(new_format = nil) return inheritable_setting.namespace_inheritable[:default_format] if new_format.nil? inheritable_setting.namespace_inheritable[:default_format] = new_format.to_sym end |
#error_formatter(format, options = nil, with: nil) ⇒ Object
47 48 49 50 |
# File 'lib/grape/dsl/request_response.rb', line 47 def error_formatter(format, = nil, with: nil) formatter = with || inheritable_setting.namespace_stackable[: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.
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/grape/dsl/request_response.rb', line 16 def format(new_format = nil) return inheritable_setting.namespace_inheritable[:format] if new_format.nil? symbolic_new_format = new_format.to_sym inheritable_setting.namespace_inheritable[:format] = symbolic_new_format inheritable_setting.namespace_inheritable[:default_error_formatter] = Grape::ErrorFormatter.formatter_for(symbolic_new_format) content_type = content_types[symbolic_new_format] raise Grape::Exceptions::MissingMimeType.new(new_format) unless content_type inheritable_setting.namespace_stackable[:content_types] = { symbolic_new_format => content_type } end |
#formatter(content_type, new_formatter) ⇒ Object
Specify a custom formatter for a content-type.
30 31 32 |
# File 'lib/grape/dsl/request_response.rb', line 30 def formatter(content_type, new_formatter) inheritable_setting.namespace_stackable[:formatters] = { content_type.to_sym => new_formatter } end |
#parser(content_type, new_parser) ⇒ Object
Specify a custom parser for a content-type.
35 36 37 |
# File 'lib/grape/dsl/request_response.rb', line 35 def parser(content_type, new_parser) inheritable_setting.namespace_stackable[:parsers] = { content_type.to_sym => new_parser } end |
#represent(model_class, with:) ⇒ 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.
150 151 152 153 154 |
# File 'lib/grape/dsl/request_response.rb', line 150 def represent(model_class, with:) raise Grape::Exceptions::InvalidWithOptionForRepresent.new unless with.is_a?(Class) inheritable_setting.namespace_stackable[:representations] = { model_class => with } end |
#rescue_from(*exception_classes, **options) ⇒ Object
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 124 125 126 127 128 |
# File 'lib/grape/dsl/request_response.rb', line 99 def rescue_from(*args, with: nil, rescue_subclasses: true, backtrace: false, original_exception: false, &block) handler = extract_handler(args, with:, block:) = (args & META_RESCUE_SELECTORS).first raise ArgumentError, "rescue_from #{.inspect} does not accept additional arguments" if && args.size > 1 namespace_inheritable = nil arg = nil if args.one? arg = args.first namespace_inheritable = inheritable_setting.namespace_inheritable end case arg when :all namespace_inheritable[:rescue_all] = true namespace_inheritable[:all_rescue_handler] = handler when :grape_exceptions namespace_inheritable[:rescue_all] = true namespace_inheritable[:rescue_grape_exceptions] = true namespace_inheritable[:grape_exceptions_rescue_handler] = handler when :internal_grape_exceptions namespace_inheritable[:internal_grape_exceptions_rescue_handler] = handler else handler_type = rescue_subclasses ? :rescue_handlers : :base_only_rescue_handlers inheritable_setting.namespace_reverse_stackable[handler_type] = args.to_h { |klass| [klass, handler] } end inheritable_setting.namespace_stackable[:rescue_options] = RescueOptions.new(backtrace:, original_exception:) end |