Skip to content

Commit 3ec7070

Browse files
feat(client): support request timeout
1 parent a369ef4 commit 3ec7070

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

src/Orb/Core/ClientOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ public Uri BaseUrl
1717
set { _baseUrl = new(() => value); }
1818
}
1919

20+
public TimeSpan Timeout { get; set; } = TimeSpan.FromMinutes(1);
21+
2022
Lazy<string> _apiKey = new(() =>
2123
Environment.GetEnvironmentVariable("ORB_API_KEY")
2224
?? throw new OrbInvalidDataException(

src/Orb/IOrbClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public interface IOrbClient
2727

2828
Uri BaseUrl { get; init; }
2929

30+
TimeSpan Timeout { get; init; }
31+
3032
string APIKey { get; init; }
3133

3234
string? WebhookSecret { get; init; }

src/Orb/OrbClient.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Net.Http;
3+
using System.Threading;
34
using System.Threading.Tasks;
45
using Orb.Core;
56
using Orb.Exceptions;
@@ -38,6 +39,12 @@ public Uri BaseUrl
3839
init { this._options.BaseUrl = value; }
3940
}
4041

42+
public TimeSpan Timeout
43+
{
44+
get { return this._options.Timeout; }
45+
init { this._options.Timeout = value; }
46+
}
47+
4148
public string APIKey
4249
{
4350
get { return this._options.APIKey; }
@@ -154,11 +161,16 @@ public async Task<HttpResponse> Execute<T>(HttpRequest<T> request)
154161
Content = request.Params.BodyContent(),
155162
};
156163
request.Params.AddHeadersToRequest(requestMessage, this);
164+
using CancellationTokenSource cts = new(this.Timeout);
157165
HttpResponseMessage responseMessage;
158166
try
159167
{
160168
responseMessage = await this
161-
.HttpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead)
169+
.HttpClient.SendAsync(
170+
requestMessage,
171+
HttpCompletionOption.ResponseHeadersRead,
172+
cts.Token
173+
)
162174
.ConfigureAwait(false);
163175
}
164176
catch (HttpRequestException e1)

0 commit comments

Comments
 (0)