A class used to build/parse <error/> elements. Look at XEP-0086 for explanation: www.xmpp.org/extensions/xep-0086.html
FIXME : XEP-0086 is officially deprecated. What effect does that have on this class? Any?
or [String] of the following:
“bad-request”
“conflict”
“feature-not-implemented”
“forbidden”
“gone”
“internal-server-error”
“item-not-found”
“jid-malformed”
“not-acceptable”
“not-allowed”
“not-authorized”
“payment-required”
“recipient-unavailable”
“redirect”
“registration-required”
“remote-server-not-found”
“remote-server-timeout”
“resource-constraint”
“service-unavailable”
“subscription-required”
“undefined-condition”
“unexpected-request”
Will raise an [Exception] if not [nil] and none of the above
Also sets type and code to appropriate values according to errorcondition
text: [nil] or [String] ErrorResponse text
# File lib/xmpp4r/errors.rb, line 100 def initialize(errorcondition=nil, text=nil) if errorcondition.nil? super() set_text(text) unless text.nil? else errortype = nil errorcode = nil @@Errors.each { |cond,type,code| if errorcondition == cond errortype = type errorcode = code end } if errortype.nil? || errorcode.nil? raise ArgumentError, "Unknown error condition when initializing ErrorReponse" end super() set_error(errorcondition) set_type(errortype) set_code(errorcode) set_text(text) unless text.nil? end end
Get the 'Legacy error code' or nil
Error code
# File lib/xmpp4r/errors.rb, line 129 def code if attributes['code'] attributes['code'].to_i else nil end end
Set the 'Legacy error code' or nil
Error code
# File lib/xmpp4r/errors.rb, line 140 def code=(i) if i.nil? attributes['code'] = nil else attributes['code'] = i.to_s end end
Get the 'XMPP error condition'
This can be anything that possess the specific namespace, checks don't apply here
# File lib/xmpp4r/errors.rb, line 160 def error name = nil each_element { |e| name = e.name if (e.namespace == 'urn:ietf:params:xml:ns:xmpp-stanzas') && (e.name != 'text') } name end
Set the 'XMPP error condition'
One previous element with that namespace will be deleted before
Name of the element to be added,
namespace will be added automatically, checks don't apply here
# File lib/xmpp4r/errors.rb, line 173 def error=(s) xe = nil each_element { |e| xe = e if (e.namespace == 'urn:ietf:params:xml:ns:xmpp-stanzas') && (e.name != 'text') } unless xe.nil? delete_element(xe) end add_element(s).add_namespace('urn:ietf:params:xml:ns:xmpp-stanzas') end
Set the 'Legacy error code' (chaining-friendly)
# File lib/xmpp4r/errors.rb, line 150 def set_code(i) self.code = i self end
Set the 'XMPP error condition' (chaining-friendly)
# File lib/xmpp4r/errors.rb, line 185 def set_error(s) self.error = s self end
Set the errors <text/> element text (chaining-friendly)
# File lib/xmpp4r/errors.rb, line 213 def set_text(s) self.text = s self end
Set the type of error (chaining-friendly)
# File lib/xmpp4r/errors.rb, line 253 def set_type(t) self.type = t self end
Get the errors <text/> element text
or nil
# File lib/xmpp4r/errors.rb, line 193 def text first_element_text('text') || super end
Set the errors <text/> element text (Previous <text/> elements will be deleted first)
<text/> content or [nil] if no <text/> element
# File lib/xmpp4r/errors.rb, line 201 def text=(s) delete_elements('text') unless s.nil? e = add_element('text') e.add_namespace('urn:ietf:params:xml:ns:xmpp-stanzas') e.text = s end end
Get the type of error (meaning how to proceed)
or [nil] as following:
:auth
:cancel
:continue
:modify
:wait
# File lib/xmpp4r/errors.rb, line 227 def type case attributes['type'] when 'auth' then :auth when 'cancel' then :cancel when 'continue' then :continue when 'modify' then :modify when 'wait' then :wait else nil end end
Set the type of error (see #type)
# File lib/xmpp4r/errors.rb, line 240 def type=(t) case t when :auth then attributes['type'] = 'auth' when :cancel then attributes['type'] = 'cancel' when :continue then attributes['type'] = 'continue' when :modify then attributes['type'] = 'modify' when :wait then attributes['type'] = 'wait' else attributes['type'] = nil end end