mod_cloud_notify/mod_cloud_notify.lua
changeset 1913 c7389fe74de7
parent 1912 eba279ddc050
child 1926 e170b11b60b8
equal deleted inserted replaced
1912:eba279ddc050 1913:c7389fe74de7
     6 local st = require"util.stanza";
     6 local st = require"util.stanza";
     7 local jid = require"util.jid";
     7 local jid = require"util.jid";
     8 local dataform = require"util.dataforms".new;
     8 local dataform = require"util.dataforms".new;
     9 
     9 
    10 local xmlns_push = "urn:xmpp:push:0";
    10 local xmlns_push = "urn:xmpp:push:0";
       
    11 
       
    12 -- configuration
       
    13 local include_body = module:get_option("push_notification_with_body", true);
       
    14 local include_sender = module:get_option("push_notification_with_sender", true);
    11 
    15 
    12 -- For keeping state across reloads
    16 -- For keeping state across reloads
    13 local push_enabled = module:shared("push-enabled-users");
    17 local push_enabled = module:shared("push-enabled-users");
    14 
    18 
    15 -- http://xmpp.org/extensions/xep-0357.html#disco
    19 -- http://xmpp.org/extensions/xep-0357.html#disco
    84 		push_info.count = push_info.count + 1;
    88 		push_info.count = push_info.count + 1;
    85 		local push_jid, push_node = push_info.jid, push_info.node;
    89 		local push_jid, push_node = push_info.jid, push_info.node;
    86 		local push_publish = st.iq({ to = push_jid, from = module.host, type = "set", id = "push" })
    90 		local push_publish = st.iq({ to = push_jid, from = module.host, type = "set", id = "push" })
    87 			:tag("pubsub", { xmlns = "http://jabber.org/protocol/pubsub" })
    91 			:tag("pubsub", { xmlns = "http://jabber.org/protocol/pubsub" })
    88 				:tag("publish", { node = push_node });
    92 				:tag("publish", { node = push_node });
    89 		push_publish:add_child(push_form:form({
    93 		local form_data = {
    90 			["message-count"] = tostring(push_info.count);
    94 			["message-count"] = tostring(push_info.count);
    91 			["last-message-sender"] = stanza.attr.from;
    95 		};
    92 			["last-message-body"] = stanza:get_child_text("body");
    96 		if include_sender then
    93 		}));
    97 			form_data["last-message-sender"] = stanza.attr.from;
       
    98 		end
       
    99 		if include_body then
       
   100 			form_data["last-message-body"] = stanza:get_child_text("body");
       
   101 		end
       
   102 		push_publish:add_child(push_form:form(form_data));
    94 		push_publish:up(); -- / publish
   103 		push_publish:up(); -- / publish
    95 		if push_info.options then
   104 		if push_info.options then
    96 			push_publish:tag("publish-options"):add_child(push_info.options);
   105 			push_publish:tag("publish-options"):add_child(push_info.options);
    97 		end
   106 		end
    98 		module:send(push_publish);
   107 		module:send(push_publish);