class Stream::Feed
Attributes
id[R]
slug[R]
user_id[R]
Public Class Methods
new(client, feed_slug, user_id)
click to toggle source
# File lib/stream/feed.rb, line 10 def initialize(client, feed_slug, user_id) raise StreamInputData, 'feed_slug can only contain alphanumeric characters plus underscores' unless valid_feed_slug feed_slug raise StreamInputData, 'user_id can only contain alphanumeric characters plus underscores and dashes' unless valid_user_id user_id @id = "#{feed_slug}:#{user_id}" @client = client @user_id = user_id @slug = feed_slug @feed_name = "#{feed_slug}#{user_id}" @feed_url = "#{feed_slug}/#{user_id}" end
Public Instance Methods
add_activities(activities)
click to toggle source
# File lib/stream/feed.rb, line 62 def add_activities(activities) uri = "/feed/#{@feed_url}/" data = { activities: activities } auth_token = create_jwt_token('feed', 'write') @client.make_request(:post, uri, auth_token, {}, data) end
add_activity(activity_data)
click to toggle source
# File lib/stream/feed.rb, line 54 def add_activity(activity_data) uri = "/feed/#{@feed_url}/" data = activity_data.clone auth_token = create_jwt_token('feed', 'write') @client.make_request(:post, uri, auth_token, {}, data) end
follow(target_feed_slug, target_user_id, activity_copy_limit = 300)
click to toggle source
# File lib/stream/feed.rb, line 108 def follow(target_feed_slug, target_user_id, activity_copy_limit = 300) uri = "/feed/#{@feed_url}/follows/" activity_copy_limit = 0 if activity_copy_limit.negative? activity_copy_limit = 1000 if activity_copy_limit > 1000 follow_data = { target: "#{target_feed_slug}:#{target_user_id}", activity_copy_limit: activity_copy_limit } auth_token = create_jwt_token('follower', 'write') @client.make_request(:post, uri, auth_token, {}, follow_data) end
followers(offset = 0, limit = 25)
click to toggle source
# File lib/stream/feed.rb, line 122 def followers(offset = 0, limit = 25) uri = "/feed/#{@feed_url}/followers/" params = { offset: offset, limit: limit } auth_token = create_jwt_token('follower', 'read') @client.make_request(:get, uri, auth_token, params) end
following(offset = 0, limit = 25, filter = [])
click to toggle source
# File lib/stream/feed.rb, line 133 def following(offset = 0, limit = 25, filter = []) uri = "/feed/#{@feed_url}/follows/" params = { offset: offset, limit: limit, filter: filter.join(',') } auth_token = create_jwt_token('follower', 'read') @client.make_request(:get, uri, auth_token, params) end
get(params = {})
click to toggle source
# File lib/stream/feed.rb, line 35 def get(params = {}) uri = if params[:enrich] || params[:reactions] "/enrich/feed/#{@feed_url}/" else "/feed/#{@feed_url}/" end params[:mark_read] = params[:mark_read].join(',') if params[:mark_read]&.is_a?(Array) params[:mark_seen] = params[:mark_seen].join(',') if params[:mark_seen]&.is_a?(Array) if params[:reactions].respond_to?(:keys) params[:withOwnReactions] = true if params[:reactions][:own] params[:withRecentReactions] = true if params[:reactions][:recent] params[:withReactionCounts] = true if params[:reactions][:counts] end %i[enrich reactions].each { |k| params.delete(k) } auth_token = create_jwt_token('feed', 'read') @client.make_request(:get, uri, auth_token, params) end
readonly_token()
click to toggle source
# File lib/stream/feed.rb, line 23 def readonly_token create_jwt_token('*', 'read') end
remove(activity_id, foreign_id: false)
click to toggle source
# File lib/stream/feed.rb, line 70 def remove(activity_id, foreign_id: false) remove_activity(activity_id, foreign_id: foreign_id) end
remove_activity(activity_id, foreign_id: false)
click to toggle source
# File lib/stream/feed.rb, line 74 def remove_activity(activity_id, foreign_id: false) uri = "/feed/#{@feed_url}/#{activity_id}/" params = {} params = { foreign_id: 1 } if foreign_id auth_token = create_jwt_token('feed', 'delete') @client.make_request(:delete, uri, auth_token, params) end
unfollow(target_feed_slug, target_user_id, keep_history: false)
click to toggle source
# File lib/stream/feed.rb, line 145 def unfollow(target_feed_slug, target_user_id, keep_history: false) uri = "/feed/#{@feed_url}/follows/#{target_feed_slug}:#{target_user_id}/" auth_token = create_jwt_token('follower', 'delete') params = {} params['keep_history'] = true if keep_history @client.make_request(:delete, uri, auth_token, params) end
update_activities(activities)
click to toggle source
# File lib/stream/feed.rb, line 87 def update_activities(activities) auth_token = create_jwt_token('activities', '*', '*') @client.make_request(:post, '/activities/', auth_token, {}, 'activities' => activities) end
update_activity(activity)
click to toggle source
# File lib/stream/feed.rb, line 83 def update_activity(activity) update_activities([activity]) end
update_activity_to_targets(foreign_id, time, new_targets: nil, added_targets: nil, removed_targets: nil)
click to toggle source
# File lib/stream/feed.rb, line 93 def update_activity_to_targets(foreign_id, time, new_targets: nil, added_targets: nil, removed_targets: nil) uri = "/feed_targets/#{@feed_url}/activity_to_targets/" data = { foreign_id: foreign_id, time: time } data['new_targets'] = new_targets unless new_targets.nil? data['added_targets'] = added_targets unless added_targets.nil? data['removed_targets'] = removed_targets unless removed_targets.nil? auth_token = create_jwt_token('feed_targets', 'write') @client.make_request(:post, uri, auth_token, {}, data) end
valid_feed_slug(feed_slug)
click to toggle source
# File lib/stream/feed.rb, line 27 def valid_feed_slug(feed_slug) !feed_slug[/^[a-zA-Z0-9_]+$/].nil? end
valid_user_id(user_id)
click to toggle source
# File lib/stream/feed.rb, line 31 def valid_user_id(user_id) !user_id.to_s[/^[\w-]+$/].nil? end
Private Instance Methods
create_jwt_token(resource, action, feed_id = nil, user_id = nil)
click to toggle source
# File lib/stream/feed.rb, line 155 def create_jwt_token(resource, action, feed_id = nil, user_id = nil) feed_id = @feed_name if feed_id.nil? Stream::Signer.create_jwt_token(resource, action, @client.api_secret, feed_id, user_id) end