Skip to content

Commit 5f3b960

Browse files
authored
Add missing enrichment for feeds and support activities (#133)
fixes #119
1 parent 3165aa6 commit 5f3b960

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

lib/stream/activities.rb

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,24 @@ def get_activities(params = {})
3636
timestamps: timestamps
3737
}
3838
end
39+
40+
uri = params[:enrich] || params[:reactions] ? '/enrich/activities/' : '/activities/'
41+
if params[:reactions].respond_to?(:keys)
42+
params[:withOwnReactions] = true if params[:reactions][:own]
43+
params[:withRecentReactions] = true if params[:reactions][:recent]
44+
params[:withReactionCounts] = true if params[:reactions][:counts]
45+
params[:withOwnChildren] = true if params[:reactions][:children]
46+
user_id = params[:reactions][:user_id]
47+
params[:user_id] = user_id if user_id
48+
kinds = params[:reactions][:kinds]
49+
if kinds
50+
params[:reactionKindsFilter] = kinds.is_a?(Array) ? kinds.join(',') : kinds
51+
end
52+
end
53+
%i[enrich reactions].each { |k| params.delete(k) }
54+
3955
signature = Stream::Signer.create_jwt_token('activities', '*', @api_secret, '*')
40-
make_request(:get, '/activities/', signature, params)
56+
make_request(:get, uri, signature, params)
4157
end
4258

4359
#

lib/stream/feed.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ def get(params = {})
4444
params[:withOwnReactions] = true if params[:reactions][:own]
4545
params[:withRecentReactions] = true if params[:reactions][:recent]
4646
params[:withReactionCounts] = true if params[:reactions][:counts]
47+
params[:withOwnChildren] = true if params[:reactions][:children]
48+
user_id = params[:reactions][:user_id]
49+
params[:user_id] = user_id if user_id
50+
kinds = params[:reactions][:kinds]
51+
if kinds
52+
params[:reactionKindsFilter] = kinds.is_a?(Array) ? kinds.join(',') : kinds
53+
end
4754
end
4855
%i[enrich reactions].each { |k| params.delete(k) }
4956

spec/integration_spec.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,39 @@
616616
expect(res).to eq(activity)
617617
end
618618

619+
example 'activity own reaction enrichment' do
620+
activity = @feed42.add_activity({ actor: 'jim', verb: 'buy', object: 'wallet' })
621+
reaction = @client.reactions.add('like', activity['id'], 'jim')
622+
reaction.delete('duration')
623+
624+
response = @client.get_activities(ids: [activity['id']], reactions: { own: true })
625+
expect(response['results'][0]['own_reactions']['like'][0]).to eq reaction
626+
end
627+
example 'activity recent reaction enrichment' do
628+
activity = @feed42.add_activity({ actor: 'jim', verb: 'buy', object: 'wallet' })
629+
reaction = @client.reactions.add('dislike', activity['id'], 'jim')
630+
reaction.delete('duration')
631+
632+
response = @client.get_activities(ids: [activity['id']], reactions: { recent: true })
633+
expect(response['results'][0]['latest_reactions']['dislike'][0]).to eq reaction
634+
end
635+
example 'activity reaction counts enrichment' do
636+
activity = @feed42.add_activity({ actor: 'jim', verb: 'buy', object: 'wallet' })
637+
@client.reactions.add('like', activity['id'], 'jim')
638+
639+
response = @client.get_activities(ids: [activity['id']], reactions: { counts: true })
640+
expect(response['results'][0]['reaction_counts']['like']).to eq 1
641+
end
642+
example 'activity reaction kinds enrichment filtering' do
643+
activity = @feed42.add_activity({ actor: 'jim', verb: 'buy', object: 'wallet' })
644+
@client.reactions.add('like', activity['id'], 'jim')
645+
@client.reactions.add('comment', activity['id'], 'jim')
646+
647+
response = @client.get_activities(ids: [activity['id']], reactions: { counts: true, kinds: ['like'] })
648+
expect(response['results'][0]['reaction_counts']['like']).to eq 1
649+
expect(response['results'][0]['reaction_counts']['comment']).to eq nil
650+
end
651+
619652
example 'partial update' do
620653
activity_a = @feed42.add_activity({
621654
actor: 'bob',

0 commit comments

Comments
 (0)