Mercurial > eldonilo > lightstring
annotate plugins/pubsub.js @ 93:26d372c9e270
fix the vcard plugin
author | Sonny Piers <sonny.piers@gmail.com> |
---|---|
date | Thu, 19 Apr 2012 16:49:46 +0200 |
parents | c1566c6981e5 |
children | 7affe7ac8fc7 |
rev | line source |
---|---|
0 | 1 'use strict'; |
2 | |
2 | 3 /** |
4 Copyright (c) 2011, Sonny Piers <sonny at fastmail dot net> | |
5 | |
6 Permission to use, copy, modify, and/or distribute this software for any | |
7 purpose with or without fee is hereby granted, provided that the above | |
8 copyright notice and this permission notice appear in all copies. | |
9 | |
10 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
7 | 19 ////////// |
20 //PubSub// | |
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 | 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 | 52 purge: function(aTo, aNode) { |
53 return "<iq type='set' to='" + aTo + "'><pubsub xmlns='" + Lightstring.ns.pubsub_owner + "'><purge node='" + aNode + "'/></pubsub></iq>"; | |
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: { |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
84 items: function(aTo, aNode, aResult, aError) { |
81 | 85 this.send(Lightstring.stanzas.pubsub.items(aTo, aNode), function(stanza) { |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
86 var items = []; |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
87 var elms = stanza.DOM.querySelectorAll('item'); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
88 for (var i = 0; i < elms.length; i++) { |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
89 var node = elms[i]; |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
90 var item = { |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
91 id: node.getAttribute('id'), |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
92 name: node.querySelector('title').textContent, |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
93 src: node.querySelector('content').getAttribute('src'), |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
94 type: node.querySelector('content').getAttribute('type'), |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
95 } |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
96 var miniature = node.querySelector('link'); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
97 if (miniature) |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
98 item.miniature = miniature.getAttribute('href'); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
99 items.push(item); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
100 }; |
87
0f6f213f0a33
Makes the PubSub items method to return the stanza object.
Sonny Piers <sonny.piers@gmail.com>
parents:
86
diff
changeset
|
101 stanza.items = items; |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
102 |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
103 if (aResult) |
87
0f6f213f0a33
Makes the PubSub items method to return the stanza object.
Sonny Piers <sonny.piers@gmail.com>
parents:
86
diff
changeset
|
104 aResult(stanza); |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
105 }, aError); |
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 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
|
108 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
|
109 }, |
90
c1566c6981e5
Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents:
89
diff
changeset
|
110 configure: function(aTo, aNode, aFields, aResult, aError) { |
c1566c6981e5
Pubsub configure stanza and method
Sonny Piers <sonny.piers@gmail.com>
parents:
89
diff
changeset
|
111 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
|
112 }, |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
113 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
|
114 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
|
115 //FIXME: wtf? |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
116 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
|
117 if(accessmodel) |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
118 aResult, aError(accessmodel); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
119 else |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
120 aResult, aError(null); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
121 }); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
122 }, |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
123 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
|
124 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
|
125 }, |
74
7cb0037bf43c
Fix a little typo error.
Sonny Piers <sonny.piers@gmail.com>
parents:
61
diff
changeset
|
126 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
|
127 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
|
128 }, |
89 | 129 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
|
130 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
|
131 }, |
89 | 132 purge: function(aTo, aNode, aResult, aError) { |
133 this.send(Lightstring.stanzas.pubsub.purge(aTo, aNode), aResult, aError); | |
134 }, | |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
135 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
|
136 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
|
137 if((stanza.DOM.getAttribute('type') === 'result') && aResult, aError) { |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
138 var affiliations = {}; |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
139 stanza.DOM.querySelectorAll('affiliation').forEach(function(affiliation) { |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
140 affiliations[affiliation.getAttribute("jid")] = affiliation.getAttribute("affiliation"); |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
141 }) |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
142 if (aResult) |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
143 aResult(affiliations); |
53
d1a7895b3dce
Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
35
diff
changeset
|
144 } |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
145 }, aError); |
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 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
|
148 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
|
149 } |
53
d1a7895b3dce
Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
35
diff
changeset
|
150 }, |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
151 init: function() { |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
152 //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
|
153 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
|
154 var payload = stanza.firstChild.firstChild; //XXX |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
155 if (payload.namespaceURI !== Lightstring.namespaces['pubsub_event']) |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
156 return; //TODO: emit something. |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
157 |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
158 var name = payload.localName; |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
159 if (event_tags.indexOf(name) === -1) |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
160 return; //TODO: emit something. |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
161 |
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
162 this.emit('pubsub:' + name); |
53
d1a7895b3dce
Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
35
diff
changeset
|
163 }); |
d1a7895b3dce
Fix PubSub plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
35
diff
changeset
|
164 } |
61
d1ba6f0e2a92
Add PubSub events emitter.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
53
diff
changeset
|
165 }; |
84 | 166 })(); |