mod_rest/mod_rest.lua
changeset 3809 683b06c0348f
parent 3808 d74509cd35fb
child 3810 c0caee8f54bb
equal deleted inserted replaced
3808:d74509cd35fb 3809:683b06c0348f
    38 		-- parse fail
    38 		-- parse fail
    39 		return errors.new({ code = 400, text = err });
    39 		return errors.new({ code = 400, text = err });
    40 	end
    40 	end
    41 	if payload.attr.xmlns then
    41 	if payload.attr.xmlns then
    42 		return errors.new({ code = 422, text = "'xmlns' attribute must be empty" });
    42 		return errors.new({ code = 422, text = "'xmlns' attribute must be empty" });
       
    43 	elseif payload.name ~= "message" and payload.name ~= "presence" and payload.name ~= "iq" then
       
    44 		return errors.new({ code = 422, text = "Invalid stanza, must be 'message', 'presence' or 'iq'." });
    43 	end
    45 	end
    44 	local to = jid.prep(payload.attr.to);
    46 	local to = jid.prep(payload.attr.to);
    45 	if not to then
    47 	if not to then
    46 		return errors.new({ code = 422, text = "Invalid destination JID" });
    48 		return errors.new({ code = 422, text = "Invalid destination JID" });
    47 	end
    49 	end
    80 					return tostring(error.context.stanza);
    82 					return tostring(error.context.stanza);
    81 				else
    83 				else
    82 					return error;
    84 					return error;
    83 				end
    85 				end
    84 			end);
    86 			end);
    85 	elseif payload.name == "message" or payload.name == "presence" then
    87 	else
    86 		local origin = {};
    88 		local origin = {};
    87 		function origin.send(stanza)
    89 		function origin.send(stanza)
    88 			module:log("debug", "Sending[rest]: %s", stanza:top_tag());
    90 			module:log("debug", "Sending[rest]: %s", stanza:top_tag());
    89 			response:send(tostring(stanza));
    91 			response:send(tostring(stanza));
    90 			return true;
    92 			return true;
    93 		if module:send(payload, origin) then
    95 		if module:send(payload, origin) then
    94 			return 202;
    96 			return 202;
    95 		else
    97 		else
    96 			return 500;
    98 			return 500;
    97 		end
    99 		end
    98 	else
       
    99 		return errors.new({ code = 400, text = "Invalid stanza, must be 'message', 'presence' or 'iq'." });
       
   100 	end
   100 	end
   101 end
   101 end
   102 
   102 
   103 -- Handle stanzas submitted via HTTP
   103 -- Handle stanzas submitted via HTTP
   104 module:depends("http");
   104 module:depends("http");