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; diff --git a/Web/Web.csproj b/Web/Web.csproj index d13234e..287e7ba 100644 --- a/Web/Web.csproj +++ b/Web/Web.csproj @@ -20,7 +20,7 @@ README.md FrenchyApps42 logo.png - 1.4.0 + 1.4.1