Mercurial > prosody-modules
comparison mod_rest/mod_rest.lua @ 4699:a8af632daf48
mod_rest: Support returning multiple replies in an <xmpp> container
Allows retrieving MAM results and possibly other things.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 29 Sep 2021 00:26:44 +0200 |
| parents | 183c2abdc3c4 |
| children | e6f46d1b3337 |
comparison
equal
deleted
inserted
replaced
| 4698:4157773ed4d3 | 4699:a8af632daf48 |
|---|---|
| 291 response.headers.content_type = send_type; | 291 response.headers.content_type = send_type; |
| 292 return encode(send_type, payload); | 292 return encode(send_type, payload); |
| 293 end | 293 end |
| 294 | 294 |
| 295 if payload.name == "iq" then | 295 if payload.name == "iq" then |
| 296 local responses = st.stanza("xmpp"); | |
| 296 function origin.send(stanza) | 297 function origin.send(stanza) |
| 297 module:send(stanza); | 298 responses:add_direct_child(stanza); |
| 298 end | 299 end |
| 299 | 300 |
| 300 if payload.attr.type ~= "get" and payload.attr.type ~= "set" then | 301 if payload.attr.type ~= "get" and payload.attr.type ~= "set" then |
| 301 return post_errors.new("iq_type"); | 302 return post_errors.new("iq_type"); |
| 302 elseif #payload.tags ~= 1 then | 303 elseif #payload.tags ~= 1 then |
| 305 | 306 |
| 306 return module:send_iq(payload, origin):next( | 307 return module:send_iq(payload, origin):next( |
| 307 function (result) | 308 function (result) |
| 308 module:log("debug", "Sending[rest]: %s", result.stanza:top_tag()); | 309 module:log("debug", "Sending[rest]: %s", result.stanza:top_tag()); |
| 309 response.headers.content_type = send_type; | 310 response.headers.content_type = send_type; |
| 311 if responses[2] then | |
| 312 return encode(send_type, responses); | |
| 313 end | |
| 310 return encode(send_type, result.stanza); | 314 return encode(send_type, result.stanza); |
| 311 end, | 315 end, |
| 312 function (error) | 316 function (error) |
| 313 if not errors.is_err(error) then | 317 if not errors.is_err(error) then |
| 314 module:log("error", "Uncaught native error: %s", error); | 318 module:log("error", "Uncaught native error: %s", error); |
