130 |
130 |
131 function reply(orig) |
131 function reply(orig) |
132 return stanza(orig.name, orig.attr and { to = orig.attr.from, from = orig.attr.to, id = orig.attr.id, type = ((orig.name == "iq" and "result") or nil) }); |
132 return stanza(orig.name, orig.attr and { to = orig.attr.from, from = orig.attr.to, id = orig.attr.id, type = ((orig.name == "iq" and "result") or nil) }); |
133 end |
133 end |
134 |
134 |
|
135 function error_reply(orig, type, condition, message, clone) |
|
136 local r = reply(orig); |
|
137 t.attr.type = "error"; |
|
138 -- TODO use clone |
|
139 t:tag("error", {type = type}) |
|
140 :tag(condition, {xmlns = "urn:ietf:params:xml:ns:xmpp-stanzas"}):up(); |
|
141 if (message) then t:tag("text"):text(message):up(); end |
|
142 return t; -- stanza ready for adding app-specific errors |
|
143 end |
|
144 |
135 function presence(attr) |
145 function presence(attr) |
136 return stanza("presence", attr); |
146 return stanza("presence", attr); |
137 end |
147 end |
138 |
148 |
139 return _M; |
149 return _M; |