Class: Vines::Stanza::Presence::Unsubscribe

Inherits:
Vines::Stanza::Presence show all
Defined in:
lib/vines/stanza/presence/unsubscribe.rb

Constant Summary

Constants inherited from Vines::Stanza::Presence

VALID_TYPES

Constants inherited from Vines::Stanza

EMPTY, ROUTABLE_STANZAS

Instance Attribute Summary

Attributes inherited from Vines::Stanza

#stream

Instance Method Summary collapse

Methods inherited from Vines::Stanza::Presence

#inbound?, #inbound_broadcast_presence, #outbound?, #outbound_broadcast_presence

Methods inherited from Vines::Stanza

#broadcast, from_node, #initialize, #local?, #local_jid?, #method_missing, register, #route, #router, #send_unavailable, #storage, #to_pubsub_domain?, #unavailable, #validate_from, #validate_to

Constructor Details

This class inherits a constructor from Vines::Stanza

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Vines::Stanza

Instance Method Details

#processObject



9
10
11
12
# File 'lib/vines/stanza/presence/unsubscribe.rb', line 9

def process
  stamp_from
  inbound? ? process_inbound : process_outbound
end

#process_inboundObject



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/vines/stanza/presence/unsubscribe.rb', line 24

def process_inbound
  to = stamp_to
  user = storage(to.domain).find_user(to)
  return unless user && user.subscribed_from?(stream.user.jid)
  contact = user.contact(stream.user.jid)
  contact.unsubscribe_from
  storage(to.domain).save_user(user)
  stream.update_user_streams(user)
  broadcast_subscription_change(contact)
  send_unavailable(to, stream.user.jid.bare)
end

#process_outboundObject



14
15
16
17
18
19
20
21
22
# File 'lib/vines/stanza/presence/unsubscribe.rb', line 14

def process_outbound
  to = stamp_to
  return unless stream.user.subscribed_to?(to)
  stream.user.remove_subscription_to(to)
  storage.save_user(stream.user)
  stream.update_user_streams(stream.user)
  local? ? process_inbound : route
  send_roster_push(to)
end