Skip to content

Commit f1a9e82

Browse files
github-actions[bot]xernobylgithub-actions
authored
chore: release 6.6.0-prerelease (#113)
* Added soft parameter to delete. * Added restore... * Fix test. * Added RestoreSoftDeletedAsync to test * Added DeletedAt property. * [chore] Added soft parameter to delete. * [chore] Added restore... * [chore] Fix test. * [chore] Added RestoreSoftDeletedAsync to test * [chore] Added DeletedAt property. * Added soft parameter to delete. * Added restore... * chore: Fix test. * Added RestoreSoftDeletedAsync to test * chore: disable message lint * chore: remove repeated func * chore: add support for local test servers * chore: refactored query parameters * chore: Cleaned test * chore: fix test * chore: disabled tests until server support (enable later) * chore(release): 6.6.0-prerelease --------- Co-authored-by: Tiago Farto <[email protected]> Co-authored-by: github-actions <[email protected]>
1 parent 794e2b9 commit f1a9e82

File tree

8 files changed

+64
-39
lines changed

8 files changed

+64
-39
lines changed

.github/workflows/ci.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- '**'
77
- '!release-**'
88

9-
concurrency:
9+
concurrency:
1010
group: ${{ github.workflow }}-${{ github.head_ref }}
1111
cancel-in-progress: true
1212

@@ -21,7 +21,7 @@ jobs:
2121
with:
2222
fetch-depth: 0
2323

24-
- uses: wagoid/commitlint-github-action@v4
24+
# - uses: wagoid/commitlint-github-action@v4
2525

2626
- name: Setup dotnet
2727
uses: actions/setup-dotnet@v2

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
## [6.6.0-prerelease](https://github.com/GetStream/stream-net/compare/6.5.3...6.6.0-prerelease) (2023-07-31)
6+
57
### [6.5.3](https://github.com/GetStream/stream-net/compare/6.5.2...6.5.3) (2023-05-16)
68

79
### [6.5.2](https://github.com/GetStream/stream-net/compare/6.5.1...6.5.2) (2023-01-31)

src/IReactions.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ public interface IReactions
3939

4040
/// <summary>Deletes a reactions.</summary>
4141
/// <remarks>https://getstream.io/activity-feeds/docs/dotnet-csharp/reactions_introduction/?language=csharp</remarks>
42-
Task DeleteAsync(string reactionId);
42+
Task DeleteAsync(string reactionId, bool soft = false);
43+
44+
/// <summary>Restores a soft deleted reaction.</summary>
45+
/// <remarks>https://getstream.io/activity-feeds/docs/dotnet-csharp/reactions_introduction/?language=csharp</remarks>
46+
Task RestoreSoftDeletedAsync(string reactionId);
4347

4448
/// <summary>Retrieves reactions.</summary>
4549
/// <remarks>https://getstream.io/activity-feeds/docs/dotnet-csharp/reactions_introduction/?language=csharp</remarks>

src/Models/Reaction.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class Reaction
2727
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "children_counts")]
2828
public Dictionary<string, int> ChildrenCounters { get; set; }
2929

30+
public DateTime? DeletedAt { get; set; }
31+
3032
public string Ref() => $"SR:{Id}";
3133
}
3234

src/Reactions.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,16 +149,30 @@ public async Task<Reaction> UpdateAsync(string reactionId, IDictionary<string, o
149149
throw StreamException.FromResponse(response);
150150
}
151151

152-
public async Task DeleteAsync(string reactionId)
152+
public async Task DeleteAsync(string reactionId, bool soft = false)
153153
{
154-
var request = _client.BuildAppRequest($"reaction/{reactionId}/", HttpMethod.Delete);
154+
var path = $"reaction/{reactionId}/";
155+
var request = _client.BuildAppRequest(path, HttpMethod.Delete);
156+
if (soft)
157+
{
158+
request.AddQueryParameter("soft", "true");
159+
}
155160

156161
var response = await _client.MakeRequestAsync(request);
157162

158163
if (response.StatusCode != HttpStatusCode.OK)
159164
throw StreamException.FromResponse(response);
160165
}
161166

167+
public async Task RestoreSoftDeletedAsync(string reactionId)
168+
{
169+
var request = _client.BuildAppRequest($"reaction/{reactionId}/restore/", HttpMethod.Put);
170+
var response = await _client.MakeRequestAsync(request);
171+
172+
if (response.StatusCode != HttpStatusCode.Created && response.StatusCode != HttpStatusCode.OK)
173+
throw StreamException.FromResponse(response);
174+
}
175+
162176
private async Task<Reaction> AddAsync(Reaction r)
163177
{
164178
var request = _client.BuildAppRequest("reaction/", HttpMethod.Post);

src/StreamClient.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ public StreamClient(string apiKey, string apiSecretOrToken, StreamClientOptions
5858
_apiKey = apiKey;
5959
_streamClientToken = TokenFactory.For(apiSecretOrToken);
6060
_options = options ?? StreamClientOptions.Default;
61-
var url = new Uri(string.Format(BaseUrlFormat, GetRegion(_options.Location)), UriKind.Absolute);
61+
var stream_url = Environment.GetEnvironmentVariable("STREAM_URL");
62+
var url = new Uri(
63+
stream_url == null || stream_url.Length == 0 ?
64+
string.Format(BaseUrlFormat, GetRegion(_options.Location)) :
65+
stream_url, UriKind.Absolute);
66+
6267
_client = new RestClient(url, TimeSpan.FromMilliseconds(_options.Timeout));
6368
var assemblyVersion = typeof(StreamClient).GetTypeInfo().Assembly.GetName().Version;
6469
Version = assemblyVersion.ToString(3);
@@ -150,7 +155,11 @@ public string CreateUserToken(string userId, IDictionary<string, object> extraDa
150155

151156
private Uri GetBasePersonalizationUrl()
152157
{
153-
return new Uri(string.Format(BasePersonalizationUrlFormat, GetRegion(_options.PersonalizationLocation)), UriKind.Absolute);
158+
var stream_url = Environment.GetEnvironmentVariable("STREAM_URL");
159+
return new Uri(
160+
stream_url == null || stream_url.Length == 0 ?
161+
string.Format(BasePersonalizationUrlFormat, GetRegion(_options.PersonalizationLocation)) :
162+
stream_url, UriKind.Absolute);
154163
}
155164

156165
private static string GetRegion(StreamApiLocation location)

src/stream-net.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PropertyGroup>
99
<PackageId>stream-net</PackageId>
1010
<Title>.NET Client for Stream Feeds</Title>
11-
<Version>6.5.3</Version>
11+
<Version>6.6.0-prerelease</Version>
1212
<Company>Stream.io</Company>
1313
<Authors>GetStream.io</Authors>
1414
<Copyright>© $([System.DateTime]::UtcNow.ToString(yyyy)) Stream.io</Copyright>

tests/ReactionTests.cs

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,7 @@ public async Task TestReactions()
2323

2424
var activity = await this.UserFeed.AddActivityAsync(a);
2525

26-
var data = new Dictionary<string, object>()
27-
{
28-
{ "field", "value" },
29-
{ "number", 2 },
30-
};
26+
var data = new Dictionary<string, object>() { { "field", "value" }, { "number", 2 }, };
3127

3228
var r = await Client.Reactions.AddAsync("like", activity.Id, "bobby", data);
3329

@@ -42,10 +38,7 @@ public async Task TestReactions()
4238

4339
// get reaction
4440
Reaction r2 = null;
45-
Assert.DoesNotThrowAsync(async () =>
46-
{
47-
r2 = await Client.Reactions.GetAsync(r.Id);
48-
});
41+
Assert.DoesNotThrowAsync(async () => r2 = await Client.Reactions.GetAsync(r.Id));
4942

5043
Assert.NotNull(r2);
5144
Assert.AreEqual(r2.ActivityId, r.ActivityId);
@@ -60,14 +53,10 @@ public async Task TestReactions()
6053
data.Remove("field");
6154

6255
var beforeTime = r.UpdatedAt.Value;
63-
Assert.DoesNotThrowAsync(async () =>
64-
{
65-
r2 = await Client.Reactions.UpdateAsync(r.Id, data);
66-
});
56+
Assert.DoesNotThrowAsync(async () => r2 = await Client.Reactions.UpdateAsync(r.Id, data));
6757
Assert.NotNull(r2);
6858
Assert.False(r2.Data.ContainsKey("field"));
69-
object n;
70-
Assert.True(r2.Data.TryGetValue("number", out n));
59+
Assert.True(r2.Data.TryGetValue("number", out object n));
7160
Assert.AreEqual((long)n, 321);
7261
Assert.True(r2.Data.ContainsKey("new"));
7362

@@ -85,15 +74,12 @@ public async Task TestReactions()
8574
Assert.IsTrue(parent.LatestChildren["upvote"].Select(x => x.Id).Contains(c3.Id));
8675
Assert.IsTrue(parent.LatestChildren["downvote"].Select(x => x.Id).Contains(c2.Id));
8776

88-
Assert.DoesNotThrowAsync(async () =>
89-
{
90-
await Client.Reactions.DeleteAsync(r.Id);
91-
});
77+
// restore tests once there is support on server
78+
// Assert.DoesNotThrowAsync(async () => await Client.Reactions.DeleteAsync(r.Id, true));
79+
// Assert.DoesNotThrowAsync(async () => await Client.Reactions.RestoreSoftDeletedAsync(r.Id));
80+
Assert.DoesNotThrowAsync(async () => await Client.Reactions.DeleteAsync(r.Id));
9281

93-
Assert.ThrowsAsync<StreamException>(async () =>
94-
{
95-
var r3 = await Client.Reactions.GetAsync(r.Id);
96-
});
82+
Assert.ThrowsAsync<StreamException>(async () => await Client.Reactions.GetAsync(r.Id));
9783
}
9884

9985
[Test]
@@ -112,11 +98,7 @@ public async Task TestReactionPagination()
11298
a.ForeignId = "cake:123";
11399
var activity2 = await this.UserFeed.AddActivityAsync(a);
114100

115-
var data = new Dictionary<string, object>()
116-
{
117-
{ "field", "value" },
118-
{ "number", 2 },
119-
};
101+
var data = new Dictionary<string, object>() { { "field", "value" }, { "number", 2 }, };
120102

121103
var userId = Guid.NewGuid().ToString();
122104

@@ -125,7 +107,13 @@ public async Task TestReactionPagination()
125107
var r3 = await Client.Reactions.AddAsync("like", activity.Id, "bob", data);
126108

127109
var r4 = await Client.Reactions.AddChildAsync(r3, "upvote", "tom", data);
128-
var r5 = await Client.Reactions.AddChildAsync(r3.Id, Guid.NewGuid().ToString(), "upvote", "mary", data);
110+
var r5 = await Client.Reactions.AddChildAsync(
111+
r3.Id,
112+
Guid.NewGuid().ToString(),
113+
"upvote",
114+
"mary",
115+
data
116+
);
129117

130118
// activity id
131119
var filter = ReactionFiltering.Default;
@@ -150,11 +138,17 @@ public async Task TestReactionPagination()
150138
Assert.AreEqual(r3.ActivityId, actual.ActivityId);
151139

152140
// with limit
153-
reactionsByActivity = await Client.Reactions.FilterAsync(filter.WithLimit(1), pagination);
141+
reactionsByActivity = await Client.Reactions.FilterAsync(
142+
filter.WithLimit(1),
143+
pagination
144+
);
154145
Assert.AreEqual(1, reactionsByActivity.Count());
155146

156147
// with data
157-
var reactionsByActivityWithData = await Client.Reactions.FilterWithActivityAsync(filter.WithLimit(1), pagination);
148+
var reactionsByActivityWithData = await Client.Reactions.FilterWithActivityAsync(
149+
filter.WithLimit(1),
150+
pagination
151+
);
158152
Assert.AreEqual(1, reactionsByActivity.Count());
159153
Assert.AreEqual(data, reactionsByActivity.FirstOrDefault().Data);
160154

0 commit comments

Comments
 (0)