class Daredevil::Responder
Attributes
controller[R]
errors[RW]
namespace[R]
options[R]
params[R]
resource[R]
status[RW]
Public Class Methods
new(resource, options = {})
click to toggle source
# File lib/daredevil/responder.rb, line 20 def initialize(resource, options = {}) @resource = resource @options = options self.status = @options[:status] @params = @options[:params] @controller = @options[:controller] @namespace = @options[:namespace] end
Public Instance Methods
render_error()
click to toggle source
# File lib/daredevil/responder.rb, line 38 def render_error controller.render(error_render_options) end
render_response()
click to toggle source
# File lib/daredevil/responder.rb, line 33 def render_response return send("respond_to_#{action}_action") if action.in?(ACTIONS) raise(Daredevil::Errors::UnknownAction, action) end
respond!()
click to toggle source
# File lib/daredevil/responder.rb, line 29 def respond! render_response end
Private Instance Methods
action()
click to toggle source
# File lib/daredevil/responder.rb, line 52 def action params[:action] end
added_errors_obj(error_obj)
click to toggle source
# File lib/daredevil/responder.rb, line 102 def added_errors_obj(error_obj) error_obj[:errors] = error_response unless errors end
added_message(error_obj)
click to toggle source
# File lib/daredevil/responder.rb, line 122 def added_message(error_obj) error_obj[:message] = errors[:reason] if errors end
added_resource(error_obj)
click to toggle source
# File lib/daredevil/responder.rb, line 106 def added_resource(error_obj) return unless errors error_obj[:resource] = resource_model_or_param error_obj[:detail] = errors[:detail] end
error_render_options()
click to toggle source
# File lib/daredevil/responder.rb, line 60 def error_render_options render_options.merge( json: { status: status_code, message: general_error_message }.tap do |added_errors| added_errors_obj(added_errors) added_resource(added_errors) added_message(added_errors) end ) end
error_response()
click to toggle source
# File lib/daredevil/responder.rb, line 80 def error_response return if errors resource.errors.inject([]) do |new_errors, (attribute, message)| new_errors << { resource: resource_name.titleize, field: attribute, reason: message, detail: resource.errors.full_message(attribute, message) } end end
general_error_message()
click to toggle source
# File lib/daredevil/responder.rb, line 98 def general_error_message I18n.t('daredevil.errors.conflict.reason') end
render_options()
click to toggle source
# File lib/daredevil/responder.rb, line 73 def render_options { status: status, content_type: 'application/vnd.api+json' } end
resource_model_or_param()
click to toggle source
# File lib/daredevil/responder.rb, line 112 def resource_model_or_param return resource.model if resource.try(:model).present? resource_param end
resource_name()
click to toggle source
# File lib/daredevil/responder.rb, line 92 def resource_name return resource.object.class.name if resource.respond_to?(:decorated?) && resource.decorated? resource.class.name end
resource_param()
click to toggle source
# File lib/daredevil/responder.rb, line 117 def resource_param resource.param if resource.class.name.eql?('ActionController::ParameterMissing') end
status=(status)
click to toggle source
# File lib/daredevil/responder.rb, line 44 def status=(status) @status = Sanitizers.status_symbol(status) end
status_code()
click to toggle source
# File lib/daredevil/responder.rb, line 48 def status_code Rack::Utils::SYMBOL_TO_STATUS_CODE[status] end