Skip to content

Commit 721846d

Browse files
CopilotLulalaby
andauthored
Respect caller-owned invite CSV streams (#759)
* Initial plan * Respect caller-owned invite CSV streams Co-authored-by: Lulalaby <14029133+Lulalaby@users.noreply.github.com> * Simplify null checks per review Co-authored-by: Lulalaby <14029133+Lulalaby@users.noreply.github.com> * Dispose only internally-created target user CSV streams Co-authored-by: Lulalaby <14029133+Lulalaby@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Lulalaby <14029133+Lulalaby@users.noreply.github.com>
1 parent ea60ce8 commit 721846d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

DisCatSharp/Net/Rest/DiscordApiClient.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3853,6 +3853,7 @@ internal async Task<DiscordInvite> CreateChannelInviteAsync(ulong channelId, int
38533853
var targetUsersCsv = targetUsersFile is not null
38543854
? CreateTargetUsersFile(targetUsersFile)
38553855
: BuildTargetUsersCsvFile(mergedTargetUsers);
3856+
var disposeTargetUsersCsv = targetUsersFile is null && targetUsersCsv is not null;
38563857

38573858
var pld = new RestChannelInviteCreatePayload
38583859
{
@@ -3893,17 +3894,14 @@ internal async Task<DiscordInvite> CreateChannelInviteAsync(ulong channelId, int
38933894
res = await this.DoRequestAsync(this.Discord, bucket, url, RestRequestMethod.POST, route, headers, DiscordJson.SerializeObject(pld)).ConfigureAwait(false);
38943895
}
38953896

3896-
if (targetUsersCsv?.ResetPositionTo is not null)
3897-
targetUsersCsv.Stream.Position = targetUsersCsv.ResetPositionTo.Value;
3898-
38993897
var ret = DiscordJson.DeserializeObject<DiscordInvite>(res.Response, this.Discord);
39003898
ret.Discord = this.Discord;
39013899

3902-
if (targetUsersCsv is not null && targetUsersCsv.ResetPositionTo is null)
3900+
if (disposeTargetUsersCsv)
39033901
{
39043902
try
39053903
{
3906-
targetUsersCsv.Stream.Dispose();
3904+
targetUsersCsv?.Stream.Dispose();
39073905
}
39083906
catch
39093907
{
@@ -5136,6 +5134,7 @@ internal async Task UpdateInviteTargetUsersAsync(string inviteCode, Stream? targ
51365134
var targetUsersCsv = targetUsersFile is not null
51375135
? CreateTargetUsersFile(targetUsersFile)
51385136
: BuildTargetUsersCsvFile(mergedTargetUsers);
5137+
var disposeTargetUsersCsv = targetUsersFile is null && targetUsersCsv is not null;
51395138

51405139
if (targetUsersCsv is null)
51415140
throw new ArgumentException("No target users provided for update.");
@@ -5153,13 +5152,14 @@ internal async Task UpdateInviteTargetUsersAsync(string inviteCode, Stream? targ
51535152
var url = Utilities.GetApiUriFor(path, this.Discord.Configuration);
51545153
await this.DoMultipartAsync(this.Discord, bucket, url, RestRequestMethod.PUT, route, headers, files: new[] { targetUsersCsv }, fileFieldNameFactory: _ => "target_users_file").ConfigureAwait(false);
51555154

5156-
if (targetUsersCsv.ResetPositionTo is not null)
5155+
if (targetUsersCsv is not null && targetUsersCsv.ResetPositionTo is not null)
51575156
targetUsersCsv.Stream.Position = targetUsersCsv.ResetPositionTo.Value;
5158-
else if (targetUsersCsv is not null)
5157+
5158+
if (disposeTargetUsersCsv)
51595159
{
51605160
try
51615161
{
5162-
targetUsersCsv.Stream.Dispose();
5162+
targetUsersCsv?.Stream.Dispose();
51635163
}
51645164
catch
51655165
{

0 commit comments

Comments
 (0)