File

teal-src/util/stanza.d.tl @ 12578:10bb58ad5583

executables: Reject Lua 5.1 early Prevents attempting to load libraries that may no longer be found and crashing with a traceback. Platforms like Debian where multiple Lua versions can be installed at the same time and 'lua' pointing to one of the installed interpreters via symlinks, there's the possibility that prosody/prosodyctl may be invoked with Lua 5.1, which will no longer have any of the rest of Prosody libraries available to be require(), and thus would immediately fail with an unfriendly traceback. Checking and aborting early with a friendlier message and reference to more information is better. Part of #1600
author Kim Alvefur <zash@zash.se>
date Sat, 02 Jul 2022 17:27:39 +0200
parent 12517:a8c17c95ef4d
child 12774:fc4adc32a537
line wrap: on
line source

local record lib

	type children_iter = function ( stanza_t ) : stanza_t
	type childtags_iter = function () : stanza_t
	type maptags_cb = function ( stanza_t ) : stanza_t


	enum stanza_error_type
		"auth"
		"cancel"
		"continue"
		"modify"
		"wait"
	end
	enum stanza_error_condition
		"bad-request"
		"conflict"
		"feature-not-implemented"
		"forbidden"
		"gone"
		"internal-server-error"
		"item-not-found"
		"jid-malformed"
		"not-acceptable"
		"not-allowed"
		"not-authorized"
		"policy-violation"
		"recipient-unavailable"
		"redirect"
		"registration-required"
		"remote-server-not-found"
		"remote-server-timeout"
		"resource-constraint"
		"service-unavailable"
		"subscription-required"
		"undefined-condition"
		"unexpected-request"
	end

	record stanza_t
		name : string
		attr : { string : string }
		{ stanza_t | string }
		tags : { stanza_t }

		query : function ( stanza_t, string ) : stanza_t
		body : function ( stanza_t, string, { string : string } ) : stanza_t
		text_tag : function ( stanza_t, string, string, { string : string } ) : stanza_t
		tag : function ( stanza_t, string, { string : string } ) : stanza_t
		text : function ( stanza_t, string ) : stanza_t
		up : function ( stanza_t ) : stanza_t
		reset : function ( stanza_t ) : stanza_t
		add_direct_child : function ( stanza_t, stanza_t )
		add_child : function ( stanza_t, stanza_t )
		remove_children : function ( stanza_t, string, string ) : stanza_t

		get_child : function ( stanza_t, string, string ) : stanza_t
		get_text : function ( stanza_t ) : string
		get_child_text : function ( stanza_t, string, string ) : string
		child_with_name : function ( stanza_t, string, string ) : stanza_t
		child_with_ns : function ( stanza_t, string, string ) : stanza_t
		children : function ( stanza_t ) : children_iter, stanza_t, integer
		childtags : function ( stanza_t, string, string ) : childtags_iter
		maptags : function ( stanza_t, maptags_cb ) : stanza_t
		find : function ( stanza_t, string ) : stanza_t | string

		top_tag : function ( stanza_t ) : string
		pretty_print : function ( stanza_t ) : string
		pretty_top_tag : function ( stanza_t ) : string

		get_error : function ( stanza_t ) : stanza_error_type, stanza_error_condition, string, stanza_t
		indent : function ( stanza_t, integer, string ) : stanza_t
	end

	record serialized_stanza_t
		name : string
		attr : { string : string }
		{ serialized_stanza_t | string }
	end

	record message_attr
		["xml:lang"] : string
		from : string
		id : string
		to : string
		type : message_type
		enum message_type
			"chat"
			"error"
			"groupchat"
			"headline"
			"normal"
		end
	end

	record presence_attr
		["xml:lang"] : string
		from : string
		id : string
		to : string
		type : presence_type
		enum presence_type
			"error"
			"probe"
			"subscribe"
			"subscribed"
			"unsubscribe"
			"unsubscribed"
		end
	end

	record iq_attr
		["xml:lang"] : string
		from : string
		id : string
		to : string
		type : iq_type
		enum iq_type
			"error"
			"get"
			"result"
			"set"
		end
	end

	stanza : function ( string, { string : string } ) : stanza_t
	is_stanza : function ( any ) : boolean
	preserialize : function ( stanza_t ) : serialized_stanza_t
	deserialize : function ( serialized_stanza_t ) : stanza_t
	clone : function ( stanza_t, boolean ) : stanza_t
	message : function ( message_attr, string ) : stanza_t
	iq : function ( iq_attr ) : stanza_t
	reply : function ( stanza_t ) : stanza_t
	error_reply : function ( stanza_t, stanza_error_type, stanza_error_condition, string, string ) : stanza_t
	presence : function ( presence_attr ) : stanza_t
	xml_escape : function ( string ) : string
	pretty_print : function ( string ) : string
end

return lib