class Discordrb::Errors::CodeError
Generic class for errors denoted by API
error codes
Attributes
code[R]
@return [Integer] The error code represented by this error class.
errors[R]
@return [Hash] More precise errors
message[R]
@return [String] This error’s represented message
Public Class Methods
new(message, errors = nil)
click to toggle source
Create a new error with a particular message (the code should be defined by the class instance variable) @param message [String] the message to use @param errors [Hash] API
errors
# File lib/discordrb/errors.rb, line 36 def initialize(message, errors = nil) @message = message @errors = errors ? flatten_errors(errors) : [] end
Public Instance Methods
code()
click to toggle source
@return [Integer] The error code represented by this error.
# File lib/discordrb/errors.rb, line 43 def code self.class.code end
full_message(*)
click to toggle source
@return [String] A message including the message and flattened errors.
# File lib/discordrb/errors.rb, line 48 def full_message(*) error_list = @errors.collect { |err| "\t- #{err}" } "#{@message}\n#{error_list.join("\n")}" end
Private Instance Methods
flatten_errors(err, prev_key = nil)
click to toggle source
@!visibility hidden Flattens errors into a more easily read format. @example Flattening errors of a bad field
flatten_errors(data['errors']) # => ["embed.fields[0].name: This field is required", "embed.fields[0].value: This field is required"]
# File lib/discordrb/errors.rb, line 67 def flatten_errors(err, prev_key = nil) err.collect do |key, sub_err| if prev_key key = /\A\d+\Z/.match?(key) ? "#{prev_key}[#{key}]" : "#{prev_key}.#{key}" end if (errs = sub_err['_errors']) "#{key}: #{errs.map { |e| e['message'] }.join(' ')}" elsif sub_err['message'] || sub_err['code'] "#{sub_err['code'] ? "#{sub_err['code']}: " : nil}#{err_msg}" elsif sub_err.is_a? String sub_err else flatten_errors(sub_err, key) end end.flatten end