diff --git a/Web/API/Request.cs b/Web/API/Request.cs
index 6d32779..e790fab 100644
--- a/Web/API/Request.cs
+++ b/Web/API/Request.cs
@@ -15,6 +15,17 @@ public class Request
///
private readonly HttpClient _httpClient = new();
+ ///
+ /// Gets or sets the timeout applied to every request sent by this instance.
+ /// Defaults to 100 seconds (HttpClient default).
+ /// Set to to disable.
+ ///
+ public TimeSpan Timeout
+ {
+ get => _httpClient.Timeout;
+ set => _httpClient.Timeout = value;
+ }
+
///
/// Settings for JSON serialization.
///
@@ -503,6 +514,17 @@ private async Task> Process(HttpRequestMessage request)
result.Error = await response.Content.ReadAsStringAsync();
}
}
+ catch (TaskCanceledException ex) when (!ex.CancellationToken.IsCancellationRequested)
+ {
+ // HttpClient.Timeout dépassé — HttpClient lève TaskCanceledException dans ce cas
+ result.StatusCode = 408; // Request Timeout
+ result.Error = $"La requête a expiré ({_httpClient.Timeout.TotalSeconds}s).";
+ }
+ catch (TaskCanceledException ex)
+ {
+ result.StatusCode = 499;
+ result.Error = $"La requête a été annulée : {ex.Message}";
+ }
catch (Exception ex)
{
result.StatusCode = 500;