Module: ActivityFeed::Feed

Included in:
ActivityFeed
Defined in:
lib/activity_feed/feed.rb

Instance Method Summary collapse

Instance Method Details

#expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: expire_in, expire_feed_in

Expire an activity feed after a set number of seconds.

Parameters:

  • user_id (String)

    User ID.

  • seconds (int)

    Number of seconds after which the activity feed will be expired.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether or not to expire the aggregate activity feed or not.



119
120
121
# File 'lib/activity_feed/feed.rb', line 119

def expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate)
  ActivityFeed.redis.expire(ActivityFeed.feed_key(user_id, aggregate), seconds)
end

#expire_feed_at(user_id, timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: expire_at

Expire an activity feed at a given timestamp.

Parameters:

  • user_id (String)

    User ID.

  • timestamp (int)

    Timestamp after which the activity feed will be expired.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether or not to expire the aggregate activity feed or not.



131
132
133
# File 'lib/activity_feed/feed.rb', line 131

def expire_feed_at(user_id, timestamp, aggregate = ActivityFeed.aggregate)
  ActivityFeed.redis.expireat(ActivityFeed.feed_key(user_id, aggregate), timestamp)
end

#feed(user_id, page, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: for

Retrieve a page from the activity feed for a given user_id. You can configure ActivityFeed.items_loader with a Proc to retrieve items from, for example, your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the page returned with loaded items rather than item IDs.

Parameters:

  • user_id (String)

    User ID.

  • page (int)

    Page in the feed to be retrieved.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether to retrieve the aggregate feed for user_id.

Returns:

  • page from the activity feed for a given user_id.



13
14
15
16
17
# File 'lib/activity_feed/feed.rb', line 13

def feed(user_id, page, aggregate = ActivityFeed.aggregate)
  feederboard = ActivityFeed.feederboard_for(user_id, aggregate)
  feed_items = feederboard.leaders(page, :page_size => ActivityFeed.page_size)
  load_feed_items(feed_items)
end

#feed_between_timestamps(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: between

Retrieve a page from the activity feed for a given user_id between a starting_timestamp and an ending_timestamp. You can configure ActivityFeed.items_loader with a Proc to retrieve items from, for example, your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the feed data returned with loaded items rather than item IDs.

Parameters:

  • user_id (String)

    User ID.

  • starting_timestamp (int)

    Starting timestamp between which items in the feed are to be retrieved.

  • ending_timestamp (int)

    Ending timestamp between which items in the feed are to be retrieved.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether to retrieve items from the aggregate feed for user_id.

Returns:

  • feed items from the activity feed for a given user_id between the starting_timestamp and ending_timestamp.



48
49
50
51
52
# File 'lib/activity_feed/feed.rb', line 48

def feed_between_timestamps(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
  feederboard = ActivityFeed.feederboard_for(user_id, aggregate)
  feed_items = feederboard.members_from_score_range(starting_timestamp, ending_timestamp)
  load_feed_items(feed_items)
end

#full_feed(user_id, aggregate = ActivityFeed.aggregate) ⇒ Object

Retrieve the entire activity feed for a given user_id. You can configure ActivityFeed.items_loader with a Proc to retrieve items from, for example, your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the page returned with loaded items rather than item IDs.

Parameters:

  • user_id (String)

    User ID.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether to retrieve the aggregate feed for user_id.

Returns:

  • the full activity feed for a given user_id.



30
31
32
33
34
# File 'lib/activity_feed/feed.rb', line 30

def full_feed(user_id, aggregate = ActivityFeed.aggregate)
  feederboard = ActivityFeed.feederboard_for(user_id, aggregate)
  feed_items = feederboard.leaders(1, :page_size => feederboard.total_members)
  load_feed_items(feed_items)
end

#remove_feeds(user_id) ⇒ Object

Remove the activity feeds for a given user_id.

Parameters:

  • user_id (String)

    User ID.



84
85
86
87
88
89
# File 'lib/activity_feed/feed.rb', line 84

def remove_feeds(user_id)
  ActivityFeed.redis.multi do |transaction|
    transaction.del(ActivityFeed.feed_key(user_id, false))
    transaction.del(ActivityFeed.feed_key(user_id, true))
  end
end

#total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: total_items

Return the total number of items in the activity feed.

Parameters:

  • user_id (String)

    User ID.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether to check the total number of items in the aggregate activity feed or not.

Returns:

  • the total number of items in the activity feed.



75
76
77
# File 'lib/activity_feed/feed.rb', line 75

def total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate)
  ActivityFeed.feederboard_for(user_id, aggregate).total_members
end

#total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size) ⇒ Object Also known as: total_pages

Return the total number of pages in the activity feed.

Parameters:

  • user_id (String)

    User ID.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether to check the total number of pages in the aggregate activity feed or not.

  • page_size (int, ActivityFeed.page_size) (defaults to: ActivityFeed.page_size)

    Page size to be used in calculating the total number of pages in the activity feed.

Returns:

  • the total number of pages in the activity feed.



63
64
65
# File 'lib/activity_feed/feed.rb', line 63

def total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size)
  ActivityFeed.feederboard_for(user_id, aggregate).total_pages_in(ActivityFeed.feed_key(user_id, aggregate), page_size)
end

#trim_feed(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: trim

Trim an activity feed between two timestamps.

Parameters:

  • user_id (String)

    User ID.

  • starting_timestamp (int)

    Starting timestamp after which activity feed items will be cut.

  • ending_timestamp (int)

    Ending timestamp before which activity feed items will be cut.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether or not to trim the aggregate activity feed or not.



97
98
99
# File 'lib/activity_feed/feed.rb', line 97

def trim_feed(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
  ActivityFeed.feederboard_for(user_id, aggregate).remove_members_in_score_range(starting_timestamp, ending_timestamp)
end

#trim_to_size(user_id, size, aggregate = ActivityFeed.aggregate) ⇒ Object Also known as: trim_to

Trim an activity feed to a given size.

Parameters:

  • user_id (String)

    User ID.

  • size (int)

    Number of items to keep in the activity feed.

  • aggregate (boolean, false) (defaults to: ActivityFeed.aggregate)

    Whether or not to trim the aggregate activity feed or not.



108
109
110
# File 'lib/activity_feed/feed.rb', line 108

def trim_to_size(user_id, size, aggregate = ActivityFeed.aggregate)
  ActivityFeed.feederboard_for(user_id, aggregate).remove_members_outside_rank(size)
end