From 356cfad4d416205511d1c1bd7d18321ebbdd2e44 Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Fri, 10 Nov 2023 13:15:07 +0000 Subject: [PATCH 01/10] chore: add support for ranking vars (string) --- src/Models/GetOptions.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Models/GetOptions.cs b/src/Models/GetOptions.cs index e93f16d..49a024d 100644 --- a/src/Models/GetOptions.cs +++ b/src/Models/GetOptions.cs @@ -17,6 +17,7 @@ public class GetOptions private string _endpoint = null; private string _feed_slug = null; private string _user_id = null; + private string _ranking_vars = null; private IDictionary _custom = null; @@ -56,6 +57,12 @@ public GetOptions WithRanking(string rankingSlug) return this; } + public GetOptions WithRankingVars(string rankingVars) + { + _ranking_vars = rankingVars; + return this; + } + public GetOptions WithSession(string session) { _session = session; @@ -111,6 +118,9 @@ internal void Apply(RestRequest request) if (!string.IsNullOrWhiteSpace(_user_id)) request.AddQueryParameter("user_id", _user_id); + if (!string.IsNullOrWhiteSpace(_ranking_vars)) + request.AddQueryParameter("ranking_vars", _ranking_vars); + if (_custom != null) { foreach (KeyValuePair kvp in _custom) From d260bed6ef9900f4b86094b3f0f2fa3b3fc1af8e Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Fri, 10 Nov 2023 14:16:41 +0000 Subject: [PATCH 02/10] chore: changed parameter to dictionary --- src/Models/GetOptions.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Models/GetOptions.cs b/src/Models/GetOptions.cs index 49a024d..753d999 100644 --- a/src/Models/GetOptions.cs +++ b/src/Models/GetOptions.cs @@ -1,4 +1,5 @@ using Stream.Rest; +using Stream.Utils; using System.Collections.Generic; namespace Stream.Models @@ -57,9 +58,9 @@ public GetOptions WithRanking(string rankingSlug) return this; } - public GetOptions WithRankingVars(string rankingVars) + public GetOptions WithRankingVars(IDictionary rankingVars) { - _ranking_vars = rankingVars; + _ranking_vars = StreamJsonConverter.SerializeObject(rankingVars); return this; } From ee79f83b7a42e988d37199f3eb1afd17c978c02a Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 13 Nov 2023 10:14:18 +0000 Subject: [PATCH 03/10] chore: added ranking test --- tests/ActivityTests/GetActivityTests.cs | 29 +++++++++++++++++++++++++ tests/TestBase.cs | 2 ++ 2 files changed, 31 insertions(+) diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index 96ce034..4d23bba 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -99,6 +99,35 @@ public async Task TestGetActivitiesByID() }); } + [Test] + public async Task TestRankingVars() + { + var newActivity1 = new Activity("1", "test", "1") + { + ForeignId = "r-test-1", + Time = DateTime.Parse("2000-08-16T16:32:32"), + }; + + newActivity1.SetData("popularity", 123); + + var response = await this.RankedFeed.AddActivityAsync(newActivity1); + + var newActivity2 = new Activity("1", "test", "2") + { + ForeignId = "r-test-2", + Time = DateTime.Parse("2000-08-17T16:32:32"), + }; + + response = await this.RankedFeed.AddActivityAsync(newActivity2); + + var ranking_vars = new Dictionary { { "popularity", 666 } }; + var r2 = await this.RankedFeed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(2).WithRanking("popularity").WithRankingVars(ranking_vars)); + Assert.NotNull(r2); + Assert.AreEqual(2, r2.Results.Count); + Assert.AreEqual(r2.Results[0].Score, 11.090528); + Assert.AreEqual(r2.Results[1].Score, 0.99999917); + } + [Test] public async Task TestGetActivitiesByForeignIDAndTime() { diff --git a/tests/TestBase.cs b/tests/TestBase.cs index d109e90..aca8531 100644 --- a/tests/TestBase.cs +++ b/tests/TestBase.cs @@ -8,6 +8,7 @@ public abstract class TestBase protected IStreamClient Client { get; private set; } protected IStreamFeed UserFeed { get; private set; } protected IStreamFeed UserFeed2 { get; private set; } + protected IStreamFeed RankedFeed { get; private set; } protected IStreamFeed FlatFeed { get; private set; } protected IStreamFeed AggregateFeed { get; private set; } protected IStreamFeed NotificationFeed { get; private set; } @@ -21,6 +22,7 @@ public void Setup() FlatFeed = Client.Feed("flat", System.Guid.NewGuid().ToString()); AggregateFeed = Client.Feed("aggregate", System.Guid.NewGuid().ToString()); NotificationFeed = Client.Feed("notification", System.Guid.NewGuid().ToString()); + RankedFeed = Client.Feed("ranked", System.Guid.NewGuid().ToString()); } } } \ No newline at end of file From 49bdfc6c7c694b6615f0527a681437ed8299ec84 Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 13 Nov 2023 11:41:03 +0000 Subject: [PATCH 04/10] chore: change feed in test --- tests/ActivityTests/GetActivityTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index 4d23bba..483413b 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -110,7 +110,7 @@ public async Task TestRankingVars() newActivity1.SetData("popularity", 123); - var response = await this.RankedFeed.AddActivityAsync(newActivity1); + var response = await this.FlatFeed.AddActivityAsync(newActivity1); var newActivity2 = new Activity("1", "test", "2") { @@ -118,10 +118,10 @@ public async Task TestRankingVars() Time = DateTime.Parse("2000-08-17T16:32:32"), }; - response = await this.RankedFeed.AddActivityAsync(newActivity2); + response = await this.FlatFeed.AddActivityAsync(newActivity2); var ranking_vars = new Dictionary { { "popularity", 666 } }; - var r2 = await this.RankedFeed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(2).WithRanking("popularity").WithRankingVars(ranking_vars)); + var r2 = await this.FlatFeed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(2).WithRanking("popularity").WithRankingVars(ranking_vars)); Assert.NotNull(r2); Assert.AreEqual(2, r2.Results.Count); Assert.AreEqual(r2.Results[0].Score, 11.090528); From 26a566b9d9e9fc499b8633a1c74c0213677ebe20 Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 13 Nov 2023 12:32:25 +0000 Subject: [PATCH 05/10] chore: change ranking test --- tests/ActivityTests/GetActivityTests.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index 483413b..73228fc 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -108,9 +108,9 @@ public async Task TestRankingVars() Time = DateTime.Parse("2000-08-16T16:32:32"), }; - newActivity1.SetData("popularity", 123); + newActivity1.SetData("popular", 123); - var response = await this.FlatFeed.AddActivityAsync(newActivity1); + var response = await this.UserFeed.AddActivityAsync(newActivity1); var newActivity2 = new Activity("1", "test", "2") { @@ -118,10 +118,10 @@ public async Task TestRankingVars() Time = DateTime.Parse("2000-08-17T16:32:32"), }; - response = await this.FlatFeed.AddActivityAsync(newActivity2); + response = await this.UserFeed.AddActivityAsync(newActivity2); var ranking_vars = new Dictionary { { "popularity", 666 } }; - var r2 = await this.FlatFeed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(2).WithRanking("popularity").WithRankingVars(ranking_vars)); + var r2 = await this.UserFeed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(2).WithRanking("popular").WithRankingVars(ranking_vars)); Assert.NotNull(r2); Assert.AreEqual(2, r2.Results.Count); Assert.AreEqual(r2.Results[0].Score, 11.090528); From feb8ebc100b4f065e0cfec361f145893d639c5eb Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 13 Nov 2023 16:25:41 +0000 Subject: [PATCH 06/10] chore: fix test --- tests/ActivityTests/GetActivityTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index 73228fc..bbc354d 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -108,7 +108,7 @@ public async Task TestRankingVars() Time = DateTime.Parse("2000-08-16T16:32:32"), }; - newActivity1.SetData("popular", 123); + newActivity1.SetData("popularity", 123); var response = await this.UserFeed.AddActivityAsync(newActivity1); From 5af3359900abf1a2d939d512e45e7cd5b785a1f3 Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 13 Nov 2023 16:42:31 +0000 Subject: [PATCH 07/10] chore: ignore test --- tests/ActivityTests/GetActivityTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index bbc354d..556bf99 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -100,6 +100,7 @@ public async Task TestGetActivitiesByID() } [Test] + [Ignore("Test database has no ranked method at the moment")] public async Task TestRankingVars() { var newActivity1 = new Activity("1", "test", "1") From ab2a544540175ad32c51b5a56c09c75d1d16f9be Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Tue, 14 Nov 2023 10:47:48 +0000 Subject: [PATCH 08/10] chore: added scorevars --- src/Models/GetOptions.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Models/GetOptions.cs b/src/Models/GetOptions.cs index 753d999..de6429f 100644 --- a/src/Models/GetOptions.cs +++ b/src/Models/GetOptions.cs @@ -19,6 +19,7 @@ public class GetOptions private string _feed_slug = null; private string _user_id = null; private string _ranking_vars = null; + private bool _score_vars = false; private IDictionary _custom = null; @@ -58,6 +59,12 @@ public GetOptions WithRanking(string rankingSlug) return this; } + public GetOptions WithScoreVars() + { + _score_vars = true; + return this; + } + public GetOptions WithRankingVars(IDictionary rankingVars) { _ranking_vars = StreamJsonConverter.SerializeObject(rankingVars); @@ -122,6 +129,9 @@ internal void Apply(RestRequest request) if (!string.IsNullOrWhiteSpace(_ranking_vars)) request.AddQueryParameter("ranking_vars", _ranking_vars); + if (_score_vars) + request.AddQueryParameter("score_vars", "true"); + if (_custom != null) { foreach (KeyValuePair kvp in _custom) From 88a015e08a7bd2f0f9bb17c13d20aeec31f4602b Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 20 Nov 2023 17:45:39 +0000 Subject: [PATCH 09/10] chore: added score vars test --- src/Models/Activity.cs | 1 + src/Models/GetOptions.cs | 2 +- src/StreamFeed.cs | 3 ++- tests/ActivityTests/GetActivityTests.cs | 21 +++++++++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Models/Activity.cs b/src/Models/Activity.cs index 998155c..ec17703 100644 --- a/src/Models/Activity.cs +++ b/src/Models/Activity.cs @@ -21,6 +21,7 @@ public class Activity : ActivityBase public string Object { get; set; } public string Target { get; set; } public string Origin { get; set; } + public Dictionary ScoreVars { get; set; } public Activity(string actor, string verb, string @object) { diff --git a/src/Models/GetOptions.cs b/src/Models/GetOptions.cs index de6429f..b982b50 100644 --- a/src/Models/GetOptions.cs +++ b/src/Models/GetOptions.cs @@ -130,7 +130,7 @@ internal void Apply(RestRequest request) request.AddQueryParameter("ranking_vars", _ranking_vars); if (_score_vars) - request.AddQueryParameter("score_vars", "true"); + request.AddQueryParameter("withScoreVars", "true"); if (_custom != null) { diff --git a/src/StreamFeed.cs b/src/StreamFeed.cs index e6d2ecb..e2693f2 100644 --- a/src/StreamFeed.cs +++ b/src/StreamFeed.cs @@ -43,7 +43,8 @@ internal StreamFeed(StreamClient client, string feedSlug, string userId) public async Task AddActivityAsync(Activity activity) { var request = _client.BuildFeedRequest(this, "/", HttpMethod.Post); - request.SetJsonBody(StreamJsonConverter.SerializeObject(activity)); + var body = StreamJsonConverter.SerializeObject(activity); + request.SetJsonBody(body); var response = await _client.MakeRequestAsync(request); diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index 556bf99..178a11f 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -129,6 +129,27 @@ public async Task TestRankingVars() Assert.AreEqual(r2.Results[1].Score, 0.99999917); } + [Test] + public async Task TestScoreVars() + { + var feed = this.RankedFeed; + + var newActivity1 = new Activity("1", "test", "1") + { + ForeignId = "r-test-1", + Time = DateTime.Parse("2000-08-16T16:32:32"), + }; + + newActivity1.SetData("popularity", 123); + var r1 = await feed.AddActivityAsync(newActivity1); + + var r2 = await feed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(1).WithRanking("popularity").WithScoreVars()); + Assert.IsNotNull(r2.Results[0].ScoreVars); + + r2 = await feed.GetFlatActivitiesAsync(GetOptions.Default.WithLimit(1).WithRanking("popularity")); + Assert.IsNull(r2.Results[0].ScoreVars); + } + [Test] public async Task TestGetActivitiesByForeignIDAndTime() { From 97a5494be04b903c9a71cd1f295acd530e4b91e6 Mon Sep 17 00:00:00 2001 From: Tiago Farto Date: Mon, 20 Nov 2023 17:56:43 +0000 Subject: [PATCH 10/10] chore: ignoring test --- tests/ActivityTests/GetActivityTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/ActivityTests/GetActivityTests.cs b/tests/ActivityTests/GetActivityTests.cs index 178a11f..1c6b8b8 100644 --- a/tests/ActivityTests/GetActivityTests.cs +++ b/tests/ActivityTests/GetActivityTests.cs @@ -130,6 +130,7 @@ public async Task TestRankingVars() } [Test] + [Ignore("Test database has no ranked method at the moment")] public async Task TestScoreVars() { var feed = this.RankedFeed;