Mercurial > eldonilo > lightstring
annotate plugins/presence.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 | 7f4e43d6cb15 |
children | c06ec02217ee |
rev | line source |
---|---|
30
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
1 'use strict'; |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
2 |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
3 /** |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
4 Copyright (c) 2011, Sonny Piers <sonny at fastmail dot net> |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
5 Copyright (c) 2012, Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
30
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
6 |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
7 Permission to use, copy, modify, and/or distribute this software for any |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
8 purpose with or without fee is hereby granted, provided that the above |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
9 copyright notice and this permission notice appear in all copies. |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
10 |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
11 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
12 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
13 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
14 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
15 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
16 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
17 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
18 */ |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
19 |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
20 //////////// |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
21 //Presence// http://xmpp.org/rfcs/rfc6121.html#presence |
1506992c33e2
Split plugins.js into multiple plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
22 //////////// |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
23 (function() { |
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
24 var legal_types = ['error', 'probe', 'subscribe', 'subscribed', 'unavailable', 'unsubscribe', 'unsubscribed']; |
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
25 |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
26 Lightstring.plugins['presence'] = { |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
27 stanzas: { |
69
03ccf507ecda
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
48
diff
changeset
|
28 out: function(object) { |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
29 if (object) { |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
30 var payloads = ""; |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
31 var attributs = ""; |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
32 if (object.type && legal_types.indexOf(object.type) !== -1) |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
33 attributs += " type='" + object.type + "'"; |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
34 |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
35 if (object.priority) |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
36 payloads += "<priority>" + object.priority + "</priority>"; |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
37 |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
38 if (object.show) |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
39 payloads += "<show>" + object.show + "</show>"; |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
40 |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
41 if (object.status) |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
42 payloads += "<status>" + object.status + "</status>"; |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
43 |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
44 if (object.payload) |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
45 payloads += object.payload; |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
46 |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
47 if (payloads) |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
48 return "<presence" + attributs + ">" + payloads + "</presence>"; |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
49 else |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
50 return "<presence" + attributs + "/>"; |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
51 |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
52 } else |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
53 return "<presence/>"; |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
54 }, |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
55 }, |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
56 methods: { |
69
03ccf507ecda
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
48
diff
changeset
|
57 send: function(aObject) { |
03ccf507ecda
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
48
diff
changeset
|
58 this.send(Lightstring.stanzas.presence.out(aObject)); |
48
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
59 } |
a118a7822410
Fix presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
32
diff
changeset
|
60 } |
31
fbb08a31921d
Improve the presence plugin.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
30
diff
changeset
|
61 }; |
84 | 62 })(); |