class Vines::Stanza::Presence::Subscribe

Public Instance Methods

process() click to toggle source
# File lib/vines/stanza/presence/subscribe.rb, line 9
def process
  stamp_from
  inbound? ? process_inbound : process_outbound
end
process_inbound() click to toggle source
# File lib/vines/stanza/presence/subscribe.rb, line 23
def process_inbound
  to = stamp_to
  follower = storage(to.domain).find_user(to)
  if follower.nil?
    auto_reply_to_subscription_request(to, 'unsubscribed')
  elsif follower.subscribed_from?(stream.user.jid)
    auto_reply_to_subscription_request(to, 'subscribed')
  else
    recipients = stream.available_resources(to)
    if recipients.empty?
      # TODO store subscription request per RFC 6121 3.1.3 #4
    else
      broadcast_to_available_resources([@node], to)
    end
  end
end
process_outbound() click to toggle source
# File lib/vines/stanza/presence/subscribe.rb, line 14
def process_outbound
  to = stamp_to
  stream.user.request_subscription(to)
  storage.save_user(stream.user)
  stream.update_user_streams(stream.user)
  local? ? process_inbound : route
  send_roster_push(to)
end