tomtaylor (owner)

Revisions

gist: 12598 Download_button fork
public
Public Clone URL: git://gist.github.com/12598.git
Embed All Files: show embed
xmpp.rb #
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
56
57
58
59
60
61
62
63
64
65
66
require 'xmpp4r-simple'
 
module ActiveMessaging
  module Adapters
    module Xmpp
      class Connection
        include ActiveMessaging::Adapter
        register :xmpp
        
        def initialize(cfg)
          jabber_id = cfg[:jabber_id]
          password = cfg[:password]
          @jabber = Jabber::Simple.new(jabber_id, password)
          @jabber.accept_subscriptions = true
          logger.info "Jabber Connected." if @jabber.connected?
        end
        
        def disconnect
          @jabber.disconnect
        end
        
        def receive
          sleep 0.01 # this is horrible
          message = @jabber.received_messages.shift
          message ? Message.new(message) : nil
        end
        
        def send destination_name, message_body, message_headers = {}
          @jabber.deliver message_body[:to], message_body[:body]
        end
        
        def received message, message_headers = {}
          
        end
        
        def subscribe destination_name, message_headers={}
          
        end
        
        def unsubscribe destination_name, message_headers={}
          
        end
        
      end
      
      class Message
        attr_accessor :headers, :body
        
        def initialize body
          @body = body
          @headers = {}
          @headers['destination'] = 'jabber'
        end
        
        def command
          'MESSAGE'
        end
      
        def to_s
          "<Xmpp::Message body='#{body}' headers='#{headers.inspect}' command='#{command}' >"
        end
      end
      
    end
  end
end