annotate plugins/pubsub.js @ 98:6ec16b3e9cfc

improvements on the websocket transport
author Sonny Piers <sonny.piers@gmail.com>
date Tue, 12 Jun 2012 19:42:49 +0200
parents 646695bde8e9
children c06ec02217ee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96898e3812a5 initial push
Sonny Piers <sonny.piers@gmail.com>
parents:
diff changeset
1 'use strict';
96898e3812a5 initial push
Sonny Piers <sonny.piers@gmail.com>
parents:
diff changeset
2
2
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
3 /**
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
4 Copyright (c) 2011, Sonny Piers <sonny at fastmail dot net>
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
5
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
6 Permission to use, copy, modify, and/or distribute this software for any
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
7 purpose with or without fee is hereby granted, provided that the above
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
8 copyright notice and this permission notice appear in all copies.
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
9
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
10 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
11 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
12 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
13 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
14 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
15 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
16 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
17 */
f31a75c3b6c8 code cleaning
Sonny Piers <sonny.piers@gmail.com>
parents: 0
diff changeset
18
7
715726598b23 improvements on plugins
Sonny Piers <sonny.piers@gmail.com>
parents: 3
diff changeset
19 //////////
715726598b23 improvements on plugins
Sonny Piers <sonny.piers@gmail.com>
parents: 3
diff changeset
20 //PubSub//
715726598b23 improvements on plugins
Sonny Piers <sonny.piers@gmail.com>
parents: 3
diff changeset
21 //////////
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
22 (function() {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
23 var event_tags = ['collection', 'configuration', 'delete', 'items', 'purge', 'subscription'];
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
24
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
25 Lightstring.plugins['pubsub'] = {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
26 namespaces: {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
27 x: "jabber:x:data", //XXX
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
28 pubsub: "http://jabber.org/protocol/pubsub",
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
29 pubsub_owner: "http://jabber.org/protocol/pubsub#owner",
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
30 pubsub_event: "http://jabber.org/protocol/pubsub#event",
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
31 pubsub_error: "http://jabber.org/protocol/pubsub#error"
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
32 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
33 stanzas: {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
34 getConfig: function(aTo, aNode) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
35 return "<iq type='get' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><configure node='" + aNode + "'/></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
36 },
96
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
37 items: function(aTo, aNode, aItems) {
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
38 var stanza = "<iq type='get' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub + "'><items node='" + aNode + "'>";
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
39 if (aItems) {
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
40 aItems.forEach(function(item) {
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
41 stanza += "<item id='" + item + "'/>"
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
42 });
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
43 }
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
44 return stanza + "</items></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
45 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
46 affiliations: function(aTo, aNode) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
47 return "<iq type='get' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><affiliations node='" + aNode + "'/></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
48 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
49 publish: function(aTo, aNode, aItem, aId) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
50 return "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub + "'><publish node='" + aNode + "'><item id='" + aId + "'>" + aItem + "</item></publish></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
51 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
52 retract: function(aTo, aNode, aItem) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
53 return "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub + "'><retract node='" + aNode + "'><item id='" + aItem + "'/></retract></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
54 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
55 delete: function(aTo, aNode) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
56 return "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><delete node='" + aNode + "'/></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
57 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
58 purge: function(aTo, aNode) {
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
59 return "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><purge node='" + aNode + "'/></pubsub></iq>";
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
60 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
61 create: function(aTo, aNode, aFields) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
62 var iq = "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub + "'><create node='" + aNode + "'/>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
63 if (aFields) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
64 iq += "<configure><x xmlns='" + Lightstring.ns.x + "' type='submit'>"
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
65 aFields.forEach(function(field) {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
66 iq += field;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
67 });
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
68 iq += "</x></configure>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
69 }
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
70 iq += "</pubsub></iq>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
71 return iq;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
72 },
90
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
73 setConfig: function(aTo, aNode, aFields) {
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
74 var iq = "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><configure node='" + aNode + "'><x xmlns='" + Lightstring.ns.x + "' type='submit'>";
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
75 aFields.forEach(function(field) {
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
76 iq += field;
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
77 });
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
78 iq += "</x></configure></pubsub></iq>";
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
79 return iq;
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
80 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
81 setAffiliations: function(aTo, aNode, aAffiliations) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
82 var iq = "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><affiliations node='" + aNode + "'>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
83 for (var i = 0; i < aAffiliations.length; i++)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
84 iq += "<affiliation jid='" + aAffiliations[i][0] + "' affiliation='" + aAffiliations[i][1] + "'/>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
85 iq += "</affiliations></pubsub></iq>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
86 return iq;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
87 },
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
88 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
89 methods: {
96
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
90 items: function(aTo, aNode, aItems, aOnSuccess, aOnError) {
646695bde8e9 better pubsub.items method
Sonny Piers <sonny.piers@gmail.com>
parents: 95
diff changeset
91 this.send(Lightstring.stanzas.pubsub.items(aTo, aNode, aItems), function(stanza) {
95
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
92 var items = stanza.DOM.querySelectorAll('item') || [];
87
0f6f213f0a33 Makes the PubSub items method to return the stanza object.
Sonny Piers <sonny.piers@gmail.com>
parents: 86
diff changeset
93 stanza.items = items;
95
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
94 if (aOnSuccess)
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
95 aOnSuccess(stanza);
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
96 }, aOnError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
97 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
98 create: function(aTo, aNode, aFields, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
99 this.send(Lightstring.stanzas.pubsub.create(aTo, aNode, aFields), aResult, aError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
100 },
90
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
101 configure: function(aTo, aNode, aFields, aResult, aError) {
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
102 this.send(Lightstring.stanzas.pubsub.setConfig(aTo, aNode, aFields), aResult, aError);
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
103 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
104 config: function(aTo, aNode, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
105 this.send(Lightstring.stanzas.pubsub.getConfig(aTo, aNode), function(stanza) {
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
106 //FIXME: wtf?
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
107 var accessmodel = stanza.DOM.querySelector('field[var="pubsub#access_model"]').lastChild.textContent;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
108 if(accessmodel)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
109 aResult, aError(accessmodel);
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
110 else
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
111 aResult, aError(null);
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
112 });
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
113 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
114 retract: function(aTo, aNode, aItem, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
115 this.send(Lightstring.stanzas.pubsub.retract(aTo, aNode, aItem), aResult, aError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
116 },
74
7cb0037bf43c Fix a little typo error.
Sonny Piers <sonny.piers@gmail.com>
parents: 61
diff changeset
117 publish: function(aTo, aNode, aItem, aId, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
118 this.send(Lightstring.stanzas.pubsub.publish(aTo, aNode, aItem, aId), aResult, aError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
119 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
120 delete: function(aTo, aNode, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
121 this.send(Lightstring.stanzas.pubsub.delete(aTo, aNode), aResult, aError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
122 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
123 purge: function(aTo, aNode, aResult, aError) {
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
124 this.send(Lightstring.stanzas.pubsub.purge(aTo, aNode), aResult, aError);
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
125 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
126 getAffiliations: function(aTo, aNode, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
127 this.send(Lightstring.stanzas.pubsub.affiliations(aTo, aNode), function(stanza) {
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
128 if((stanza.DOM.getAttribute('type') === 'result') && aResult, aError) {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
129 var affiliations = {};
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
130 stanza.DOM.querySelectorAll('affiliation').forEach(function(affiliation) {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
131 affiliations[affiliation.getAttribute("jid")] = affiliation.getAttribute("affiliation");
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
132 })
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
133 if (aResult)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
134 aResult(affiliations);
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
135 }
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
136 }, aError);
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
137 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
138 setAffiliations: function(aTo, aNode, aAffiliations, aResult, aError) {
86
0c10c9a69c69 Lightstring.stanza has been renamed to Lightstring.stanzas.
Sonny Piers <sonny.piers@gmail.com>
parents: 84
diff changeset
139 this.send(Lightstring.stanzas.pubsub.setAffiliations(aTo, aNode, aAffiliations), aResult, aError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
140 }
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
141 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
142 init: function() {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
143 //TODO: find a way to put that in handlers, it’s UGLY!
75
619f3ffa125a Lightstring.namespaces has been renamed to Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 74
diff changeset
144 this.on('in-message-*-' + Lightstring.ns['pubsub_event'] + ':event', function(stanza) {
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
145 var payload = stanza.firstChild.firstChild; //XXX
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
146 if (payload.namespaceURI !== Lightstring.namespaces['pubsub_event'])
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
147 return; //TODO: emit something.
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
148
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
149 var name = payload.localName;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
150 if (event_tags.indexOf(name) === -1)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
151 return; //TODO: emit something.
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
152
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
153 this.emit('pubsub:' + name);
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
154 });
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
155 }
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
156 };
84
7f4e43d6cb15 My mistake.
Sonny Piers <sonny.piers@gmail.com>
parents: 83
diff changeset
157 })();