view idavoll/xmpp_error.py @ 153:753b8432460f

Work towards JEP-0060 1.8 - Remove subscription information from <affiliations/> result. - Add handling of <subscriptions/> entity use case. - Make <subscribe/> return <subscription/> instead of <entity/>. - Move <purge/> and <delete/> to owner namespace. - Don't use 'self' in interfaces.
author Ralph Meijer <ralphm@ik.nu>
date Sat, 06 May 2006 19:47:53 +0000
parents 53b1bea9289b
children 5191ba7c4df8
line wrap: on
line source

NS_XMPP_STANZAS = "urn:ietf:params:xml:ns:xmpp-stanzas"

conditions = {
	'bad-request':				{'code': '400', 'type': 'modify'},
	'not-authorized':			{'code': '401', 'type': 'cancel'},
	'item-not-found':			{'code': '404', 'type': 'cancel'},
	'not-acceptable':			{'code': '406', 'type': 'modify'},
	'conflict':					{'code': '409', 'type': 'cancel'},
	'internal-server-error':	{'code': '500', 'type': 'wait'},
	'feature-not-implemented':	{'code': '501', 'type': 'cancel'},
	'service-unavailable':		{'code': '503', 'type': 'cancel'},
}

def error_from_iq(iq, condition, text = '', type = None):
	iq.swapAttributeValues("to", "from")
	iq["type"] = 'error'
	e = iq.addElement("error")

	c = e.addElement((NS_XMPP_STANZAS, condition), NS_XMPP_STANZAS)

	if type == None:
		type = conditions[condition]['type']

	code = conditions[condition]['code']

	e["code"] = code
	e["type"] = type

	if text:
		t = e.addElement((NS_XMPP_STANZAS, "text"), NS_XMPP_STANZAS, text)

	return iq