annotate plugins/pubsub.js @ 95:7affe7ac8fc7

fix the items method on the PubSub plugin
author Sonny Piers <sonny.piers@gmail.com>
date Fri, 20 Apr 2012 15:44:47 +0200
parents c1566c6981e5
children 646695bde8e9
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 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
37 items: function(aTo, aNode) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
38 return "<iq type='get' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub + "'><items node='" + aNode + "'/></pubsub></iq>";
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
39 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
40 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
41 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
42 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
43 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
44 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
45 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
46 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
47 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
48 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
49 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
50 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
51 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
52 purge: function(aTo, aNode) {
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
53 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
54 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
55 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
56 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
57 if (aFields) {
80
50d36b093e3a Lightstring.namespaces/NS has been renamed by Lightstring.ns.
Sonny Piers <sonny.piers@gmail.com>
parents: 75
diff changeset
58 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
59 aFields.forEach(function(field) {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
60 iq += field;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
61 });
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
62 iq += "</x></configure>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
63 }
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
64 iq += "</pubsub></iq>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
65 return iq;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
66 },
90
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
67 setConfig: function(aTo, aNode, aFields) {
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
68 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
69 aFields.forEach(function(field) {
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
70 iq += field;
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
71 });
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
72 iq += "</x></configure></pubsub></iq>";
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
73 return iq;
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
74 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
75 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
76 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
77 for (var i = 0; i < aAffiliations.length; i++)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
78 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
79 iq += "</affiliations></pubsub></iq>";
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
80 return iq;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
81 },
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
82 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
83 methods: {
95
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
84 items: function(aTo, aNode, aOnSuccess, aOnError) {
81
7500bc048dbc Typo errors.
Sonny Piers <sonny.piers@gmail.com>
parents: 80
diff changeset
85 this.send(Lightstring.stanzas.pubsub.items(aTo, aNode), function(stanza) {
95
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
86 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
87 stanza.items = items;
95
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
88 if (aOnSuccess)
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
89 aOnSuccess(stanza);
7affe7ac8fc7 fix the items method on the PubSub plugin
Sonny Piers <sonny.piers@gmail.com>
parents: 90
diff changeset
90 }, aOnError);
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
91 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
92 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
93 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
94 },
90
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
95 configure: function(aTo, aNode, aFields, aResult, aError) {
c1566c6981e5 Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents: 89
diff changeset
96 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
97 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
98 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
99 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
100 //FIXME: wtf?
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
101 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
102 if(accessmodel)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
103 aResult, aError(accessmodel);
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
104 else
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
105 aResult, aError(null);
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
106 });
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
107 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
108 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
109 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
110 },
74
7cb0037bf43c Fix a little typo error.
Sonny Piers <sonny.piers@gmail.com>
parents: 61
diff changeset
111 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
112 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
113 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
114 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
115 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
116 },
89
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
117 purge: function(aTo, aNode, aResult, aError) {
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
118 this.send(Lightstring.stanzas.pubsub.purge(aTo, aNode), aResult, aError);
Sonny Piers <sonny.piers@gmail.com>
parents: 87
diff changeset
119 },
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
120 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
121 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
122 if((stanza.DOM.getAttribute('type') === 'result') && aResult, aError) {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
123 var affiliations = {};
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
124 stanza.DOM.querySelectorAll('affiliation').forEach(function(affiliation) {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
125 affiliations[affiliation.getAttribute("jid")] = affiliation.getAttribute("affiliation");
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
126 })
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
127 if (aResult)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
128 aResult(affiliations);
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
129 }
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
130 }, aError);
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
131 },
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
132 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
133 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
134 }
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 init: function() {
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
137 //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
138 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
139 var payload = stanza.firstChild.firstChild; //XXX
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
140 if (payload.namespaceURI !== Lightstring.namespaces['pubsub_event'])
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
141 return; //TODO: emit something.
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
142
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
143 var name = payload.localName;
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
144 if (event_tags.indexOf(name) === -1)
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
145 return; //TODO: emit something.
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
146
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
147 this.emit('pubsub:' + name);
53
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
148 });
d1a7895b3dce Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 35
diff changeset
149 }
61
d1ba6f0e2a92 Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 53
diff changeset
150 };
84
7f4e43d6cb15 My mistake.
Sonny Piers <sonny.piers@gmail.com>
parents: 83
diff changeset
151 })();