Process all validation errors on a model and returns an array of message objects.
object:: MongoId model to process field_name_map:: Maps an internal field name to a user visible field name. (Optional)
# File lib/openshift/controller/api_responses.rb, line 116 def get_error_messages(object, field_name_map={}) messages = [] object.errors.keys.each do |key| field = field_name_map[key.to_s] || key.to_s err_msgs = object.errors.get(key) err_msgs.each do |err_msg| messages.push(Message.new(:error, err_msg, object.class.validation_map[key], field)) end if err_msgs end if object && object.errors && object.errors.keys messages end
Should be gradually phased out in preference to direct argument passing
# File lib/openshift/controller/api_responses.rb, line 132 def get_extra_log_args args = {} args["APP"] = @application_name if @application_name args["DOMAIN"] = @domain_name if @domain_name args["APP_UUID"] = @application_uuid if @application_uuid return args end
Renders a REST response for an unsuccessful request.
status:: HTTP Success code. See {ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE} msg:: The error message returned in the REST response err_code:: Error code for the message in the REST response field:: Specified the field (if any) that the message applies to. msg_type:: Can be one of :error, :warning, :info. Defaults to :error messages:: Array of message objects. If provided, it will log all messages in the action log and will add them to the REST response. msg, err_code, field, and msg_type will be ignored.
# File lib/openshift/controller/api_responses.rb, line 29 def render_error(status, msg, err_code=nil, field=nil, msg_type=nil, messages=nil, internal_error=false) reply = new_rest_reply(status) if messages.present? reply.messages.concat(messages) log_action(@log_tag, !internal_error, msg, get_extra_log_args, messages.map(&:text).join(', ')) else msg_type = :error unless msg_type reply.messages.push(Message.new(msg_type, msg, err_code, field)) if msg log_action(@log_tag, !internal_error, msg, get_extra_log_args) end respond_with reply end
Renders a REST response for an exception.
ex:: The exception to return to the user.
# File lib/openshift/controller/api_responses.rb, line 48 def render_exception(ex) Rails.logger.error "Reference ID: #{request.uuid} - #{ex.message}\n #{ex.backtrace.join("\n ")}" error_code = ex.respond_to?('code') ? ex.code : 1 message = ex.message if ex.kind_of? OpenShift::UserException status = :unprocessable_entity elsif ex.kind_of? OpenShift::AccessDeniedException status = :forbidden elsif ex.kind_of? OpenShift::DNSException status = :service_unavailable elsif ex.kind_of? OpenShift::NodeException status = :internal_server_error if ex.resultIO error_code = ex.resultIO.exitcode message = "" if ex.resultIO.errorIO && ex.resultIO.errorIO.length > 0 message = ex.resultIO.errorIO.string.strip end message ||= "" message += "Unable to complete the requested operation due to: #{ex.message}.\nReference ID: #{request.uuid}" end else status = :internal_server_error message = "Unable to complete the requested operation due to: #{ex.message}.\nReference ID: #{request.uuid}" end internal_error = status != :unprocessable_entity render_error(status, message, error_code, nil, nil, nil, internal_error) end
Renders a REST response with for a successful request.
status:: HTTP Success code. See {ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE} type:: Rest object type. data:: REST Object to render log_msg:: Message to be logged in action logs publish_msg:: If true, adds a message object to the REST response with type=>msg_type and message=>log_msg msg_type:: Can be one of :error, :warning, :info. Defaults to :error messages:: Array of message objects. If provided, it will log all messages in the action log and will add them to the REST response. publish_msg, log_msg, and msg_type will be ignored.
# File lib/openshift/controller/api_responses.rb, line 96 def render_success(status, type, data, log_msg=nil, publish_msg=false, msg_type=nil, messages=nil, extra_log_args=get_extra_log_args) reply = new_rest_reply(status, type, data) if messages.present? reply.messages.concat(messages) log_action(@log_tag, true, log_msg, get_extra_log_args, messages.map(&:text).join(', ')) else msg_type = :info unless msg_type reply.messages.push(Message.new(msg_type, log_msg)) if publish_msg && log_msg log_action(@log_tag, true, log_msg, extra_log_args) end respond_with reply end
Generated with the Darkfish Rdoc Generator 2.