module Friendis::Friendable::InstanceMethods

Public Instance Methods

_update_friendis_meta_data() click to toggle source
# File lib/friendis/friendable.rb, line 111
def _update_friendis_meta_data
  Friendis.redis.multi do
    attr_hash = {}

    self.class.friendis_fields.each do |field|
      attr_hash[field] = self.send(field)
    end
    Friendis.redis.hmset friendis_meta_key, *attr_hash.to_a
  end
  true
end
approve_friend_request(friend) click to toggle source
# File lib/friendis/friendable.rb, line 55
def approve_friend_request(friend)
  return false unless has_friend_request_from?(friend)

  Friendis.redis.multi do
    Friendis.redis.srem friend.friendis_outgoing_friend_requests_key, self.id.to_s
    Friendis.redis.srem friendis_incoming_friend_requests_key, friend.id.to_s
    Friendis.redis.sadd friendis_my_friends_key, friend.id.to_s
    Friendis.redis.sadd friend.friendis_my_friends_key, self.id.to_s
  end
  true
end
clear_friendis_data() click to toggle source
# File lib/friendis/friendable.rb, line 105
def clear_friendis_data
  [friendis_meta_key, friendis_my_friends_key, friendis_incoming_friend_requests_key, friendis_outgoing_friend_requests_key].each do |friendis_key|
    Friendis.redis.del friendis_key
  end
end
friendis_incoming_friend_requests_key() click to toggle source
# File lib/friendis/friendable.rb, line 131
def friendis_incoming_friend_requests_key
  "#{self.class.name.downcase}:#{self.id}:friend_requests"
end
friendis_meta_key(uuid = nil) click to toggle source
# File lib/friendis/friendable.rb, line 123
def friendis_meta_key(uuid = nil)
  "#{self.class.name.downcase}:#{uuid || self.id}:friendis_meta"
end
friendis_my_friends_key() click to toggle source
# File lib/friendis/friendable.rb, line 127
def friendis_my_friends_key
  "#{self.class.name.downcase}:#{self.id}:friends"
end
friendis_outgoing_friend_requests_key() click to toggle source
# File lib/friendis/friendable.rb, line 135
def friendis_outgoing_friend_requests_key
  "#{self.class.name.downcase}:#{self.id}:requested_friendship"
end
friends() click to toggle source
# File lib/friendis/friendable.rb, line 85
def friends
  Friendis.redis.smembers(friendis_my_friends_key).collect {|friend_id| get_friendis_meta(friend_id)}
end
get_friendis_meta(uuid = nil) click to toggle source
# File lib/friendis/friendable.rb, line 44
def get_friendis_meta(uuid = nil)
  Friendis.redis.hgetall friendis_meta_key(uuid)
end
has_friend_request_from?(friend) click to toggle source
# File lib/friendis/friendable.rb, line 89
def has_friend_request_from?(friend) 
  Friendis.redis.sismember friendis_incoming_friend_requests_key, friend.id.to_s
end
ignore_friend_request(friend) click to toggle source
# File lib/friendis/friendable.rb, line 67
def ignore_friend_request(friend)
  return false unless has_friend_request_from?(friend)

  # Ignoring a friend request, leaves the request in the requester queue, but removes
  # it from the pending requests list of the recipient.
  Friendis.redis.multi do
    Friendis.redis.srem friendis_incoming_friend_requests_key, friend.id.to_s
  end
  true
end
is_friends_with?(friend) click to toggle source
# File lib/friendis/friendable.rb, line 93
def is_friends_with?(friend)
  Friendis.redis.sismember friendis_my_friends_key, friend.id.to_s
end
pending_friend_requests() click to toggle source
# File lib/friendis/friendable.rb, line 97
def pending_friend_requests
  Friendis.redis.smembers(friendis_incoming_friend_requests_key).collect {|friend_id| get_friendis_meta(friend_id)}
end
send_friend_request(friend) click to toggle source
# File lib/friendis/friendable.rb, line 48
def send_friend_request(friend)
  Friendis.redis.multi do
    Friendis.redis.sadd friendis_outgoing_friend_requests_key, friend.id.to_s
    Friendis.redis.sadd friend.friendis_incoming_friend_requests_key, self.id.to_s
  end
end
sent_friend_requests() click to toggle source
# File lib/friendis/friendable.rb, line 101
def sent_friend_requests
  Friendis.redis.smembers(friendis_outgoing_friend_requests_key).collect {|friend_id| get_friendis_meta(friend_id)}
end
unfriend(friend) click to toggle source
# File lib/friendis/friendable.rb, line 78
def unfriend(friend)
  Friendis.redis.multi do
    Friendis.redis.srem friendis_my_friends_key, friend.id
    Friendis.redis.srem friend.friendis_my_friends_key, self.id
  end
end