Class: Stream::Feed
- Inherits:
-
Object
- Object
- Stream::Feed
- Defined in:
- lib/stream/feed.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#slug ⇒ Object
readonly
Returns the value of attribute slug.
-
#user_id ⇒ Object
readonly
Returns the value of attribute user_id.
Instance Method Summary collapse
- #add_activities(activities) ⇒ Object
- #add_activity(activity_data) ⇒ Object
- #follow(target_feed_slug, target_user_id, activity_copy_limit = 300) ⇒ Object
- #follow_stats(followers_slugs = nil, following_slugs = nil) ⇒ Object
- #followers(offset = 0, limit = 25) ⇒ Object
- #following(offset = 0, limit = 25, filter = []) ⇒ Object
- #get(params = {}) ⇒ Object
-
#initialize(client, feed_slug, user_id) ⇒ Feed
constructor
A new instance of Feed.
- #readonly_token ⇒ Object
- #remove(activity_id, foreign_id: false) ⇒ Object
- #remove_activity(activity_id, foreign_id: false) ⇒ Object
- #unfollow(target_feed_slug, target_user_id, keep_history: false) ⇒ Object
- #update_activities(activities) ⇒ Object
- #update_activity(activity) ⇒ Object
- #update_activity_to_targets(foreign_id, time, new_targets: nil, added_targets: nil, removed_targets: nil) ⇒ Object
- #valid_feed_slug(feed_slug) ⇒ Object
- #valid_user_id(user_id) ⇒ Object
Constructor Details
#initialize(client, feed_slug, user_id) ⇒ Feed
Returns a new instance of Feed.
10 11 12 13 14 15 16 17 18 19 20 21 |
# 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 |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
6 7 8 |
# File 'lib/stream/feed.rb', line 6 def id @id end |
#slug ⇒ Object (readonly)
Returns the value of attribute slug.
7 8 9 |
# File 'lib/stream/feed.rb', line 7 def slug @slug end |
#user_id ⇒ Object (readonly)
Returns the value of attribute user_id.
8 9 10 |
# File 'lib/stream/feed.rb', line 8 def user_id @user_id end |
Instance Method Details
#add_activities(activities) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/stream/feed.rb', line 70 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) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/stream/feed.rb', line 62 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) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/stream/feed.rb', line 116 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 |
#follow_stats(followers_slugs = nil, following_slugs = nil) ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/stream/feed.rb', line 161 def follow_stats(followers_slugs = nil, following_slugs = nil) uri = '/stats/follow' params = { followers: @id, following: @id } params[:followers_slugs] = followers_slugs.join(',') if followers_slugs params[:following_slugs] = following_slugs.join(',') if following_slugs auth_token = create_jwt_token('*', 'read', '*') @client.make_request(:get, uri, auth_token, params) end |
#followers(offset = 0, limit = 25) ⇒ Object
130 131 132 133 134 135 136 137 138 139 |
# File 'lib/stream/feed.rb', line 130 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 = []) ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/stream/feed.rb', line 141 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 = {}) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# 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[:withFirstReactions] = true if params[:reactions][:first] params[:withRecentReactions] = true if params[:reactions][:recent] params[:withReactionCounts] = true if params[:reactions][:counts] params[:withOwnChildren] = true if params[:reactions][:children] user_id = params[:reactions][:user_id] params[:user_id] = user_id if user_id kinds = params[:reactions][:kinds] if kinds params[:reactionKindsFilter] = kinds.is_a?(Array) ? kinds.join(',') : kinds end 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 ⇒ Object
23 24 25 |
# File 'lib/stream/feed.rb', line 23 def readonly_token create_jwt_token('*', 'read') end |
#remove(activity_id, foreign_id: false) ⇒ Object
78 79 80 |
# File 'lib/stream/feed.rb', line 78 def remove(activity_id, foreign_id: false) remove_activity(activity_id, foreign_id: foreign_id) end |
#remove_activity(activity_id, foreign_id: false) ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/stream/feed.rb', line 82 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) ⇒ Object
153 154 155 156 157 158 159 |
# File 'lib/stream/feed.rb', line 153 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) ⇒ Object
95 96 97 98 99 |
# File 'lib/stream/feed.rb', line 95 def update_activities(activities) auth_token = create_jwt_token('activities', '*', '*') @client.make_request(:post, '/activities/', auth_token, {}, 'activities' => activities) end |
#update_activity(activity) ⇒ Object
91 92 93 |
# File 'lib/stream/feed.rb', line 91 def update_activity(activity) update_activities([activity]) end |
#update_activity_to_targets(foreign_id, time, new_targets: nil, added_targets: nil, removed_targets: nil) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/stream/feed.rb', line 101 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) ⇒ Object
27 28 29 |
# 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) ⇒ Object
31 32 33 |
# File 'lib/stream/feed.rb', line 31 def valid_user_id(user_id) !user_id.to_s[/^[\w-]+$/].nil? end |