Skip to content

Commit 7d54c3b

Browse files
authored
Merge pull request #30 from FrApp42/dev/main
Expose HttpClient.Timeout property and distinguish timeouts
2 parents 4a56a48 + ceab4d1 commit 7d54c3b

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

Web/API/Request.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ public class Request
1515
/// </summary>
1616
private readonly HttpClient _httpClient = new();
1717

18+
/// <summary>
19+
/// Gets or sets the timeout applied to every request sent by this instance.
20+
/// Defaults to 100 seconds (HttpClient default).
21+
/// Set to <see cref="System.Threading.Timeout.InfiniteTimeSpan"/> to disable.
22+
/// </summary>
23+
public TimeSpan Timeout
24+
{
25+
get => _httpClient.Timeout;
26+
set => _httpClient.Timeout = value;
27+
}
28+
1829
/// <summary>
1930
/// Settings for JSON serialization.
2031
/// </summary>
@@ -503,6 +514,17 @@ private async Task<Result<T>> Process<T>(HttpRequestMessage request)
503514
result.Error = await response.Content.ReadAsStringAsync();
504515
}
505516
}
517+
catch (TaskCanceledException ex) when (!ex.CancellationToken.IsCancellationRequested)
518+
{
519+
// HttpClient.Timeout dépassé — HttpClient lève TaskCanceledException dans ce cas
520+
result.StatusCode = 408; // Request Timeout
521+
result.Error = $"La requête a expiré ({_httpClient.Timeout.TotalSeconds}s).";
522+
}
523+
catch (TaskCanceledException ex)
524+
{
525+
result.StatusCode = 499;
526+
result.Error = $"La requête a été annulée : {ex.Message}";
527+
}
506528
catch (Exception ex)
507529
{
508530
result.StatusCode = 500;

Web/Web.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<PackageReadmeFile>README.md</PackageReadmeFile>
2121
<Company>FrenchyApps42</Company>
2222
<PackageIcon>logo.png</PackageIcon>
23-
<Version>1.4.0</Version>
23+
<Version>1.4.1</Version>
2424
</PropertyGroup>
2525

2626
<ItemGroup>

0 commit comments

Comments
 (0)