Fix bubble party + Download queue + Allow pause user in syncshell + add visual feature + clean log info
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MareSynchronos.WebAPI.SignalR;
|
||||
using MareSynchronos.Services.AutoDetect;
|
||||
@@ -65,15 +66,21 @@ public class DiscoveryApiClient
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> SendRequestAsync(string endpoint, string token, string? displayName, CancellationToken ct)
|
||||
public async Task<bool> SendRequestAsync(string endpoint, string? token, string? targetUid, string? displayName, CancellationToken ct)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(token) && string.IsNullOrEmpty(targetUid))
|
||||
{
|
||||
_logger.LogWarning("Discovery request aborted: no token or targetUid provided");
|
||||
return false;
|
||||
}
|
||||
|
||||
var jwt = await _tokenProvider.GetOrUpdateToken(ct).ConfigureAwait(false);
|
||||
if (string.IsNullOrEmpty(jwt)) return false;
|
||||
using var req = new HttpRequestMessage(HttpMethod.Post, endpoint);
|
||||
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", jwt);
|
||||
var body = JsonSerializer.Serialize(new { token, displayName });
|
||||
var body = JsonSerializer.Serialize(new RequestPayload(token, targetUid, displayName));
|
||||
req.Content = new StringContent(body, Encoding.UTF8, "application/json");
|
||||
var resp = await _httpClient.SendAsync(req, ct).ConfigureAwait(false);
|
||||
if (resp.StatusCode == System.Net.HttpStatusCode.Unauthorized)
|
||||
@@ -82,7 +89,7 @@ public class DiscoveryApiClient
|
||||
if (string.IsNullOrEmpty(jwt2)) return false;
|
||||
using var req2 = new HttpRequestMessage(HttpMethod.Post, endpoint);
|
||||
req2.Headers.Authorization = new AuthenticationHeaderValue("Bearer", jwt2);
|
||||
var body2 = JsonSerializer.Serialize(new { token, displayName });
|
||||
var body2 = JsonSerializer.Serialize(new RequestPayload(token, targetUid, displayName));
|
||||
req2.Content = new StringContent(body2, Encoding.UTF8, "application/json");
|
||||
resp = await _httpClient.SendAsync(req2, ct).ConfigureAwait(false);
|
||||
}
|
||||
@@ -102,6 +109,14 @@ public class DiscoveryApiClient
|
||||
}
|
||||
}
|
||||
|
||||
private sealed record RequestPayload(
|
||||
[property: JsonPropertyName("token"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
string? Token,
|
||||
[property: JsonPropertyName("targetUid"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
string? TargetUid,
|
||||
[property: JsonPropertyName("displayName"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
string? DisplayName);
|
||||
|
||||
public async Task<bool> PublishAsync(string endpoint, IEnumerable<string> hashes, string? displayName, CancellationToken ct, bool allowRequests = true)
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user