Class: AgentXmpp::Client
- Inherits:
-
Object
- Object
- AgentXmpp::Client
- Defined in:
- lib/agent_xmpp/client/client.rb
Overview
Instance Attribute Summary collapse
-
#connection ⇒ Object
readonly
———————————————————————————————————.
-
#jid ⇒ Object
readonly
———————————————————————————————————.
-
#password ⇒ Object
readonly
———————————————————————————————————.
-
#port ⇒ Object
readonly
———————————————————————————————————.
-
#roster ⇒ Object
readonly
———————————————————————————————————.
Instance Method Summary collapse
-
#add_delegate(delegate) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#connect ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#connected? ⇒ Boolean
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_acknowledge_add_contact(client_connection, response, contact_jid) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_add_contact(client_connection, roster_item) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_authenticate(client_connection, stanza) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_bind(client_connection, stanza) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_connect(client_connection) ⇒ Object
——————————————————————————————————— AgentXmpp::Connection delegate .….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_disconnect(client_connection) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_not_authenticate(client_connection, stanza) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_not_connect(client_connection) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_all_roster_items(client_connection) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_client_version_request(client_connection, request) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_client_version_result(client_connection, from, version) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_presence(client_connection, presence) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_roster_item(client_connection, roster_item) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_subscribe_request(client_connection, presence) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_receive_unsubscribed_request(client_connection, presence) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_remove_contact(client_connection, response, contact_jid) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#did_remove_roster_item(client_connection, roster_item) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#initialize(config) ⇒ Client
constructor
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#reconnect ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
-
#remove_delegate(delegate) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
Constructor Details
#initialize(config) ⇒ Client
.….….….….….….….….….….….….….….….….….….….….….….….….….….
12 13 14 15 16 17 18 |
# File 'lib/agent_xmpp/client/client.rb', line 12 def initialize(config) @password = config['password'] @port = config['port'] || 5222 resource = config['resource'] || Socket.gethostname @jid = Jabber::JID.new("#{config['jid']}/#{resource}") @roster = Roster.new(@jid, config['contacts']) end |
Instance Attribute Details
#connection ⇒ Object (readonly)
8 9 10 |
# File 'lib/agent_xmpp/client/client.rb', line 8 def connection @connection end |
#jid ⇒ Object (readonly)
8 9 10 |
# File 'lib/agent_xmpp/client/client.rb', line 8 def jid @jid end |
#password ⇒ Object (readonly)
8 9 10 |
# File 'lib/agent_xmpp/client/client.rb', line 8 def password @password end |
#port ⇒ Object (readonly)
8 9 10 |
# File 'lib/agent_xmpp/client/client.rb', line 8 def port @port end |
#roster ⇒ Object (readonly)
8 9 10 |
# File 'lib/agent_xmpp/client/client.rb', line 8 def roster @roster end |
Instance Method Details
#add_delegate(delegate) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
43 44 45 |
# File 'lib/agent_xmpp/client/client.rb', line 43 def add_delegate(delegate) connection.add_delegate(delegate) end |
#connect ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
21 22 23 24 25 26 27 28 29 |
# File 'lib/agent_xmpp/client/client.rb', line 21 def connect while (true) EventMachine.run do @connection = EventMachine.connect(jid.domain, port, Connection, self, jid, password, port) end sleep(10.0) AgentXmpp.logger.warn "RESTARTING SERVER" end end |
#connected? ⇒ Boolean
.….….….….….….….….….….….….….….….….….….….….….….….….….….
38 39 40 |
# File 'lib/agent_xmpp/client/client.rb', line 38 def connected? connection and !connection.error? end |
#did_acknowledge_add_contact(client_connection, response, contact_jid) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
164 165 166 |
# File 'lib/agent_xmpp/client/client.rb', line 164 def did_acknowledge_add_contact(client_connection, response, contact_jid) AgentXmpp.logger.info "CONTACT ADD ACKNOWLEDGED: #{contact_jid.to_s}" end |
#did_add_contact(client_connection, roster_item) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
174 175 176 |
# File 'lib/agent_xmpp/client/client.rb', line 174 def did_add_contact(client_connection, roster_item) AgentXmpp.logger.info "CONTACT ADDED: #{roster_item.jid.to_s}" end |
#did_authenticate(client_connection, stanza) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….…. authentication .….….….….….….….….….….….….….….….….….….….….….….….….….….
75 76 77 |
# File 'lib/agent_xmpp/client/client.rb', line 75 def did_authenticate(client_connection, stanza) AgentXmpp.logger.info "AUTHENTICATED" end |
#did_bind(client_connection, stanza) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
85 86 87 |
# File 'lib/agent_xmpp/client/client.rb', line 85 def did_bind(client_connection, stanza) AgentXmpp.logger.info "BIND ACKNOWLEDGED" end |
#did_connect(client_connection) ⇒ Object
AgentXmpp::Connection delegate .….….….….….….….….….….….….….….….….….….….….….….….….….…. connection .….….….….….….….….….….….….….….….….….….….….….….….….….….
57 58 59 |
# File 'lib/agent_xmpp/client/client.rb', line 57 def did_connect(client_connection) AgentXmpp.logger.info "CONNECTED" end |
#did_disconnect(client_connection) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
62 63 64 65 |
# File 'lib/agent_xmpp/client/client.rb', line 62 def did_disconnect(client_connection) AgentXmpp.logger.warn "DISCONNECTED" EventMachine::stop_event_loop end |
#did_not_authenticate(client_connection, stanza) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
80 81 82 |
# File 'lib/agent_xmpp/client/client.rb', line 80 def did_not_authenticate(client_connection, stanza) AgentXmpp.logger.info "AUTHENTICATION FAILED" end |
#did_not_connect(client_connection) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
68 69 70 |
# File 'lib/agent_xmpp/client/client.rb', line 68 def did_not_connect(client_connection) AgentXmpp.logger.warn "CONNECTION FAILED" end |
#did_receive_all_roster_items(client_connection) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
155 156 157 158 159 160 161 |
# File 'lib/agent_xmpp/client/client.rb', line 155 def did_receive_all_roster_items(client_connection) AgentXmpp.logger.info "RECEIVED ALL ROSTER ITEMS" roster.select{|j,r| not r[:activated]}.each do |j,r| AgentXmpp.logger.info "ADDING CONTACT: #{j}" client_connection.add_contact(Jabber::JID.new(j)) end end |
#did_receive_client_version_request(client_connection, request) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
188 189 190 191 |
# File 'lib/agent_xmpp/client/client.rb', line 188 def did_receive_client_version_request(client_connection, request) client_connection.send_client_version(request) AgentXmpp.logger.info "RECEIVED CLIENT VERSION REQUEST: #{request.from.to_s}" end |
#did_receive_client_version_result(client_connection, from, version) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….…. service discovery management .….….….….….….….….….….….….….….….….….….….….….….….….….….
181 182 183 184 185 |
# File 'lib/agent_xmpp/client/client.rb', line 181 def did_receive_client_version_result(client_connection, from, version) roster[from..to_s][:resources][from.to_s][:version] = version \ unless roster[from..to_s][:resources][from.to_s].nil? AgentXmpp.logger.info "RECEIVED CLIENT VERSION RESULT: #{from.to_s}, #{version.iname}, #{version.version}" end |
#did_receive_presence(client_connection, presence) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….…. presence .….….….….….….….….….….….….….….….….….….….….….….….….….….
92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/agent_xmpp/client/client.rb', line 92 def did_receive_presence(client_connection, presence) from_jid = presence.from.to_s = presence.from..to_s if roster.has_key?() roster[.to_s][:resources][from_jid] = {} if roster[.to_s][:resources][from_jid].nil? roster[.to_s][:resources][from_jid][:presence] = presence client_connection.get_client_version(from_jid) if not from_jid.eql?(client_connection.jid.to_s) and presence.type.nil? AgentXmpp.logger.info "RECEIVED PRESENCE FROM: #{from_jid}" else AgentXmpp.logger.info "RECEIVED PRESENCE FROM JID NOT IN CONTACT LIST: #{from_jid}" end end |
#did_receive_roster_item(client_connection, roster_item) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….…. roster management .….….….….….….….….….….….….….….….….….….….….….….….….….….
131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/agent_xmpp/client/client.rb', line 131 def did_receive_roster_item(client_connection, roster_item) AgentXmpp.logger.info "RECEIVED ROSTER ITEM" roster_item_jid = roster_item.jid.to_s if roster.has_key?(roster_item_jid) roster[roster_item_jid][:activated] = true roster[roster_item_jid][:roster_item] = roster_item AgentXmpp.logger.info "ACTIVATING CONTACT: #{roster_item_jid}" else client_connection.remove_contact(roster_item.jid) AgentXmpp.logger.info "REMOVING CONTACT: #{roster_item_jid}" end end |
#did_receive_subscribe_request(client_connection, presence) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
106 107 108 109 110 111 112 113 114 115 |
# File 'lib/agent_xmpp/client/client.rb', line 106 def did_receive_subscribe_request(client_connection, presence) from_jid = presence.from.to_s if roster.has_key?(presence.from..to_s ) client_connection.accept_contact_request(from_jid) AgentXmpp.logger.info "RECEIVED SUBSCRIBE REQUEST: #{from_jid}" else client_connection.reject_contact_request(from_jid) AgentXmpp.logger.info "RECEIVED SUBSCRIBE REQUEST FROM JID NOT IN CONTACT LIST: #{from_jid}" end end |
#did_receive_unsubscribed_request(client_connection, presence) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
118 119 120 121 122 123 124 125 126 |
# File 'lib/agent_xmpp/client/client.rb', line 118 def did_receive_unsubscribed_request(client_connection, presence) from_jid = presence.from.to_s if roster.delete(presence.from..to_s ) client_connection.remove_contact(presence.from) AgentXmpp.logger.info "RECEIVED UNSUBSCRIBED REQUEST: #{from_jid}" else AgentXmpp.logger.warn "RECEIVED UNSUBSCRIBED REQUEST FROM JID NOT IN CONTACT LIST: #{from_jid}" end end |
#did_remove_contact(client_connection, response, contact_jid) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
169 170 171 |
# File 'lib/agent_xmpp/client/client.rb', line 169 def did_remove_contact(client_connection, response, contact_jid) AgentXmpp.logger.info "CONTACT REMOVED: #{contact_jid.to_s}" end |
#did_remove_roster_item(client_connection, roster_item) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
145 146 147 148 149 150 151 152 |
# File 'lib/agent_xmpp/client/client.rb', line 145 def did_remove_roster_item(client_connection, roster_item) AgentXmpp.logger.info "REMOVE ROSTER ITEM" roster_item_jid = roster_item.jid.to_s if roster.has_key?(roster_item_jid) roster.delete(roster_item_jid) AgentXmpp.logger.info "REMOVED CONTACT: #{roster_item_jid}" end end |
#reconnect ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
32 33 34 35 |
# File 'lib/agent_xmpp/client/client.rb', line 32 def reconnect AgentXmpp.logger.info "RECONNECTING" connection.reconnect(jid.domain, port) end |
#remove_delegate(delegate) ⇒ Object
.….….….….….….….….….….….….….….….….….….….….….….….….….….
48 49 50 |
# File 'lib/agent_xmpp/client/client.rb', line 48 def remove_delegate(delegate) connection.remove_delegate(delegate) end |