Mercurial > isshouni
comparison isshouni.js @ 2:88eb49491a1e
Reply to iq, and better split code.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Thu, 23 Feb 2012 20:40:37 +0100 |
| parents | 617063bc96f7 |
| children | 0082e861cf16 |
comparison
equal
deleted
inserted
replaced
| 1:617063bc96f7 | 2:88eb49491a1e |
|---|---|
| 27 var spawn = require('child_process').spawn; | 27 var spawn = require('child_process').spawn; |
| 28 | 28 |
| 29 var cl = new xmpp.Client(config); | 29 var cl = new xmpp.Client(config); |
| 30 var mplayer = spawn('mplayer', args); | 30 var mplayer = spawn('mplayer', args); |
| 31 var paused = false; | 31 var paused = false; |
| 32 var connected = false; | |
| 32 | 33 |
| 33 var connect = function() { | 34 var connect = function() { |
| 34 cl.send(new xmpp.Element('presence', {to: config.muc + '/' + config.nick}) | 35 cl.send(new xmpp.Element('presence', {to: config.muc + '/' + config.nick}) |
| 35 .c('x', {xmlns: 'http://jabber.org/protocol/muc'}) | 36 .c('x', {xmlns: 'http://jabber.org/protocol/muc'}) |
| 36 .c('history', {maxchars: '0'}) | 37 .c('history', {maxchars: '0'}) |
| 43 cl.send(new xmpp.Element('presence', {to: config.muc + '/' + config.nick, type: 'unavailable'})); | 44 cl.send(new xmpp.Element('presence', {to: config.muc + '/' + config.nick, type: 'unavailable'})); |
| 44 process.stdin.end(); | 45 process.stdin.end(); |
| 45 cl.end(); | 46 cl.end(); |
| 46 }; | 47 }; |
| 47 | 48 |
| 48 var send_message = function(name, arg) { | 49 var send_message = function(name, arg, type) { |
| 49 //console.log('SENT: ' + name + ' ' + arg); | 50 //console.log('SENT: ' + name + ' ' + arg); |
| 50 var message = new xmpp.Element('message', {to: config.muc, type: 'groupchat'}) | 51 if (!type) |
| 52 type = 'groupchat'; | |
| 53 | |
| 54 var message = new xmpp.Element('message', {to: config.muc, type: type}) | |
| 51 .c(name, {xmlns: 'urn:linkmauve:player'}); | 55 .c(name, {xmlns: 'urn:linkmauve:player'}); |
| 52 | 56 |
| 53 if (arg) | 57 if (arg) |
| 54 message.t(arg); | 58 message.t(arg); |
| 55 | 59 |
| 61 mplayer.stdin.write(text + '\n'); | 65 mplayer.stdin.write(text + '\n'); |
| 62 }; | 66 }; |
| 63 | 67 |
| 64 cl.on('stanza', function(stanza) { | 68 cl.on('stanza', function(stanza) { |
| 65 //console.log(stanza.toString()); | 69 //console.log(stanza.toString()); |
| 66 if (!stanza.is('message') || stanza.attrs['type'] !== 'groupchat') | 70 |
| 71 var type = stanza.attrs['type']; | |
| 72 var from = new JID(stanza.attrs['from']); | |
| 73 var id = stanza.attrs['id'] || ''; | |
| 74 | |
| 75 if (stanza.is('iq') && (type === 'get' || type === 'set')) | |
| 76 return cl.send(new xmpp.Element('iq', {to: from, id: id, type: 'error'}) | |
| 77 .c('error', {type: 'cancel'}) | |
| 78 .c('service-unavailable', {xmlns: 'urn:ietf:params:xml:ns:xmpp-stanzas'}) | |
| 79 .up() | |
| 80 .up()); | |
| 81 | |
| 82 if (from.bare !== config.muc) | |
| 67 return; | 83 return; |
| 68 | 84 |
| 69 var from = new JID(stanza.attrs['from']); | 85 if (stanza.is('presence') && type !== 'unavailable') |
| 70 if (from.bare !== config.muc) | 86 return on_presence(stanza); |
| 71 return; | 87 |
| 88 if (stanza.is('message')) | |
| 89 return on_message(stanza); | |
| 90 }); | |
| 91 | |
| 92 var on_message = function(from, stanza) { | |
| 72 if (from.resource === config.nick) | 93 if (from.resource === config.nick) |
| 73 return; | 94 return; |
| 74 | 95 |
| 75 var message = stanza.getChild('body'); | 96 var message = stanza.getChild('body'); |
| 76 if (message) | 97 if (message) |
| 87 paused = !paused; | 108 paused = !paused; |
| 88 } else if (payload.name === 'seek') | 109 } else if (payload.name === 'seek') |
| 89 send_command('seek ' + payload.getText()); | 110 send_command('seek ' + payload.getText()); |
| 90 else if (payload.name === 'synchro') | 111 else if (payload.name === 'synchro') |
| 91 send_command('seek ' + payload.getText() + ' 2'); | 112 send_command('seek ' + payload.getText() + ' 2'); |
| 92 }); | 113 }; |
| 114 | |
| 115 var on_presence = function(from, stanza) { | |
| 116 if (from.resource === config.nick) { | |
| 117 connected = true; | |
| 118 return; | |
| 119 } | |
| 120 }; | |
| 93 | 121 |
| 94 cl.on('error', function(e) { | 122 cl.on('error', function(e) { |
| 95 console.log(e); | 123 console.log(e); |
| 96 }); | 124 }); |
| 97 | 125 |
