From af169899cdd8952a1ccae97a3138c4da3f34d78f Mon Sep 17 00:00:00 2001 From: Sergei Date: Fri, 18 Aug 2023 13:31:49 -0700 Subject: [PATCH] Implement IQ responses Service Unavailable and Feature not Implemented --- xmpp_error.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 xmpp_error.go diff --git a/xmpp_error.go b/xmpp_error.go new file mode 100644 index 0000000..026820a --- /dev/null +++ b/xmpp_error.go @@ -0,0 +1,57 @@ +package xmpp + +import ( + "fmt" +) + +// ErrorServiceUnavailable implements error response about feature that is not available. Currently implemented for +// xep-0030. +// QueryXmlns is about incoming xmlns attribute in query tag. +// Node is about incoming node attribute in query tag (looks like it used only in disco#commands). +// +// If queried feature is not here on purpose, standards suggest answer with this stanza. +func (c *Client) ErrorServiceUnavailable(v IQ, queryXmlns, node string) (string, error) { + query := fmt.Sprintf("", node) + } else { + query += "/>" + } + + query += "" + query += "" + query += "" + + return c.RawInformation( + v.To, + v.From, + v.ID, + IQTypeError, + query, + ) +} + +// ErrorNotImplemented implements error response about feature that is not (yet?) implemented. +// Xmlns is about not implemented feature. +// +// If queried feature is not here because of it under development or for similar reasons, standards suggest answer with +// this stanza. +func (c *Client) ErrorNotImplemented(v IQ, xmlns, feature string) (string, error) { + query := "" + query += "" + query += fmt.Sprintf( + "", + xmlns, + feature, + ) + query += "" + + return c.RawInformation( + v.To, + v.From, + v.ID, + IQTypeError, + query, + ) +}