public
Description: jabber interface to todo script in groovy
Homepage:
Clone URL: git://github.com/igouss/todo_jabber_server.git
todo_jabber_server / todo_jabber_server.groovy
100755 55 lines (41 sloc) 1.461 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/env groovy -cp lib/smack.jar:lib/smackx.jar
 
import java.io.*
import org.jivesoftware.smack.*
import org.jivesoftware.smack.packet.*
import org.jivesoftware.smack.filter.*
 
def connection = new XMPPConnection("jabber.org")
connection.connect()
connection.login("todobot123", "passwd")
 
presence = new Presence(Presence.Type.available)
presence.setStatus("Getting Things Done!")
connection.sendPacket(presence)
 
filter = new AndFilter();
filter.addFilter(new FromMatchesFilter("i.gouss@gmail.com"));
filter.addFilter(new PacketTypeFilter(Message.class));
 
 
class TodoPacketListener implements PacketListener {
  private XMPPConnection connection
  
  TodoPacketListener(XMPPConnection connection) {
    this.connection = connection
  }
 
  void processPacket(Packet packet) {
    try {
      def message = (Message) packet
      def program = ["/Users/i_gouss/bin/todo.py", "-p"]
      def args = message.getBody().split().toList();
      program.addAll(args)
 
      def proc = program.execute()
      proc.waitFor()
 
      def reply = new Message(message.getFrom(), Message.Type.chat)
      reply.setFrom(message.getTo())
      reply.setThread(message.getThread())
      reply.setBody(proc.in.text)
 
      connection.sendPacket(reply)
    } catch(Exception ex) {
      println ex
    }
  }
}
 
connection.addPacketListener(new TodoPacketListener(connection), filter)
 
InputStreamReader converter = new InputStreamReader(System.in)
BufferedReader input = new BufferedReader(converter)
input.readLine()