Skip to content

Commit 8c6ae09

Browse files
authored
Merge branch 'main' into fix/deprecated-v1
2 parents 446c1e9 + 2774d75 commit 8c6ae09

File tree

177 files changed

+3334
-1388
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+3334
-1388
lines changed

clients/algoliasearch-client-csharp/algoliasearch/Clients/AbtestingConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public AbtestingConfig(string appId, string apiKey, string region = null) : base
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/AnalyticsConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public AnalyticsConfig(string appId, string apiKey, string region = null) : base
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/IngestionClient.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2823,6 +2823,9 @@ public async Task<WatchResponse> PushTaskAsync(string taskID, PushTaskPayload pu
28232823

28242824
requestOptions.AddQueryParameter("watch", watch);
28252825
requestOptions.Data = pushTaskPayload;
2826+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
2827+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
2828+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
28262829
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/2/tasks/{taskID}/push", requestOptions, cancellationToken).ConfigureAwait(false);
28272830
}
28282831

@@ -3024,6 +3027,9 @@ public async Task<WatchResponse> TriggerDockerSourceDiscoverAsync(string sourceI
30243027

30253028
requestOptions.PathParameters.Add("sourceID", QueryStringHelper.ParameterToString(sourceID));
30263029

3030+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
3031+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
3032+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
30273033
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/1/sources/{sourceID}/discover", requestOptions, cancellationToken).ConfigureAwait(false);
30283034
}
30293035

@@ -3235,6 +3241,9 @@ public async Task<WatchResponse> ValidateSourceAsync(SourceCreate sourceCreate =
32353241

32363242

32373243
requestOptions.Data = sourceCreate;
3244+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
3245+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
3246+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
32383247
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/1/sources/validate", requestOptions, cancellationToken).ConfigureAwait(false);
32393248
}
32403249

@@ -3260,6 +3269,9 @@ public async Task<WatchResponse> ValidateSourceBeforeUpdateAsync(string sourceID
32603269
requestOptions.PathParameters.Add("sourceID", QueryStringHelper.ParameterToString(sourceID));
32613270

32623271
requestOptions.Data = sourceUpdate;
3272+
requestOptions.ReadTimeout ??= TimeSpan.FromMilliseconds(180000);
3273+
requestOptions.WriteTimeout ??= TimeSpan.FromMilliseconds(180000);
3274+
requestOptions.ConnectTimeout ??= TimeSpan.FromMilliseconds(180000);
32633275
return await _transport.ExecuteRequestAsync<WatchResponse>(new HttpMethod("POST"), "/1/sources/{sourceID}/validate", requestOptions, cancellationToken).ConfigureAwait(false);
32643276
}
32653277

clients/algoliasearch-client-csharp/algoliasearch/Clients/IngestionConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public IngestionConfig(string appId, string apiKey, string region) : base(appId,
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(25);
36-
WriteTimeout = TimeSpan.FromSeconds(25);
37-
ConnectTimeout = TimeSpan.FromSeconds(25);
35+
ReadTimeout = TimeSpan.FromMilliseconds(25000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(25000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(25000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/InsightsConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public InsightsConfig(string appId, string apiKey, string region = null) : base(
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/MonitoringConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public MonitoringConfig(string appId, string apiKey) : base(appId, apiKey, "Moni
3131
{
3232
DefaultHosts = GetDefaultHosts();
3333
Compression = CompressionType.None;
34-
ReadTimeout = TimeSpan.FromSeconds(5);
35-
WriteTimeout = TimeSpan.FromSeconds(30);
36-
ConnectTimeout = TimeSpan.FromSeconds(2);
34+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
35+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
36+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3737
}
3838
private static List<StatefulHost> GetDefaultHosts()
3939
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/PersonalizationConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public PersonalizationConfig(string appId, string apiKey, string region) : base(
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/QuerySuggestionsConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public QuerySuggestionsConfig(string appId, string apiKey, string region) : base
3232
{
3333
DefaultHosts = GetDefaultHosts(region);
3434
Compression = CompressionType.None;
35-
ReadTimeout = TimeSpan.FromSeconds(5);
36-
WriteTimeout = TimeSpan.FromSeconds(30);
37-
ConnectTimeout = TimeSpan.FromSeconds(2);
35+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
36+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
37+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3838
}
3939
private static List<StatefulHost> GetDefaultHosts(string region)
4040
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/RecommendConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public RecommendConfig(string appId, string apiKey) : base(appId, apiKey, "Recom
3131
{
3232
DefaultHosts = GetDefaultHosts(appId);
3333
Compression = CompressionType.None;
34-
ReadTimeout = TimeSpan.FromSeconds(5);
35-
WriteTimeout = TimeSpan.FromSeconds(30);
36-
ConnectTimeout = TimeSpan.FromSeconds(2);
34+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
35+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
36+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3737
}
3838
private static List<StatefulHost> GetDefaultHosts(string appId)
3939
{

clients/algoliasearch-client-csharp/algoliasearch/Clients/SearchConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public SearchConfig(string appId, string apiKey) : base(appId, apiKey, "Search",
3131
{
3232
DefaultHosts = GetDefaultHosts(appId);
3333
Compression = CompressionType.None;
34-
ReadTimeout = TimeSpan.FromSeconds(5);
35-
WriteTimeout = TimeSpan.FromSeconds(30);
36-
ConnectTimeout = TimeSpan.FromSeconds(2);
34+
ReadTimeout = TimeSpan.FromMilliseconds(5000);
35+
WriteTimeout = TimeSpan.FromMilliseconds(30000);
36+
ConnectTimeout = TimeSpan.FromMilliseconds(2000);
3737
}
3838
private static List<StatefulHost> GetDefaultHosts(string appId)
3939
{

clients/algoliasearch-client-csharp/algoliasearch/Http/InternalRequestOptions.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public InternalRequestOptions(RequestOptions options = null)
2525

2626
CustomPathParameters = new Dictionary<string, string>();
2727
PathParameters = new Dictionary<string, string>();
28-
Timeout = options?.Timeout;
28+
ConnectTimeout = options?.ConnectTimeout;
29+
ReadTimeout = options?.ReadTimeout;
30+
WriteTimeout = options?.WriteTimeout;
2931
}
3032

3133
public void AddQueryParameter(string key, object value)
@@ -76,9 +78,19 @@ public void AddCustomQueryParameters(IDictionary<string, object> values)
7678
public object Data { get; set; }
7779

7880
/// <summary>
79-
/// Request timeout
81+
/// Request read timeout
8082
/// </summary>
81-
public TimeSpan? Timeout { get; set; }
83+
public TimeSpan? ReadTimeout { get; set; }
84+
85+
/// <summary>
86+
/// Request write timeout
87+
/// </summary>
88+
public TimeSpan? WriteTimeout { get; set; }
89+
90+
/// <summary>
91+
/// Request connect timeout
92+
/// </summary>
93+
public TimeSpan? ConnectTimeout { get; set; }
8294

8395
/// <summary>
8496
/// Enforce the Read Transporter

clients/algoliasearch-client-csharp/algoliasearch/Http/RequestOptionBuilder.cs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,35 @@ public RequestOptionBuilder AddExtraQueryParameters(string key, object value)
4747
}
4848

4949
/// <summary>
50-
/// Set the request timeout
50+
/// Set the request read timeout
5151
/// </summary>
5252
/// <param name="timeout"></param>
5353
/// <returns></returns>
54-
public RequestOptionBuilder SetTimeout(TimeSpan timeout)
54+
public RequestOptionBuilder SetReadTimeout(TimeSpan timeout)
5555
{
56-
_options.Timeout = timeout;
56+
_options.ReadTimeout = timeout;
57+
return this;
58+
}
59+
60+
/// <summary>
61+
/// Set the request write timeout
62+
/// </summary>
63+
/// <param name="timeout"></param>
64+
/// <returns></returns>
65+
public RequestOptionBuilder SetWriteTimeout(TimeSpan timeout)
66+
{
67+
_options.WriteTimeout = timeout;
68+
return this;
69+
}
70+
71+
/// <summary>
72+
/// Set the request connect timeout
73+
/// </summary>
74+
/// <param name="timeout"></param>
75+
/// <returns></returns>
76+
public RequestOptionBuilder SetConnectTimeout(TimeSpan timeout)
77+
{
78+
_options.ConnectTimeout = timeout;
5779
return this;
5880
}
5981

clients/algoliasearch-client-csharp/algoliasearch/Http/RequestOptions.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,19 @@ public class RequestOptions
2020
public IDictionary<string, object> QueryParameters { get; set; }
2121

2222
/// <summary>
23-
/// Request timeout in seconds
23+
/// Request timeout
2424
/// </summary>
25-
public TimeSpan? Timeout { get; set; }
25+
public TimeSpan? ReadTimeout { get; set; }
26+
27+
/// <summary>
28+
/// Request timeout
29+
/// </summary>
30+
public TimeSpan? WriteTimeout { get; set; }
31+
32+
/// <summary>
33+
/// Request timeout
34+
/// </summary>
35+
public TimeSpan? ConnectTimeout { get; set; }
2636

2737
/// <summary>
2838
/// Constructs a new instance of <see cref="RequestOptions"/>

clients/algoliasearch-client-csharp/algoliasearch/Transport/HttpTransport.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private async Task<TResult> ExecuteRequestAsync<TResult, TData>(HttpMethod metho
119119
request.Uri = BuildUri(host, uri, requestOptions?.CustomPathParameters, requestOptions?.PathParameters,
120120
requestOptions?.QueryParameters);
121121
var requestTimeout =
122-
TimeSpan.FromTicks((requestOptions?.Timeout ?? GetTimeOut(callType)).Ticks * (host.RetryCount + 1));
122+
TimeSpan.FromTicks((GetTimeOut(callType, requestOptions)).Ticks * (host.RetryCount + 1));
123123

124124
if (request.Body == null && (method == HttpMethod.Post || method == HttpMethod.Put))
125125
{
@@ -137,7 +137,7 @@ private async Task<TResult> ExecuteRequestAsync<TResult, TData>(HttpMethod metho
137137
}
138138

139139
var response = await _httpClient
140-
.SendRequestAsync(request, requestTimeout, _algoliaConfig.ConnectTimeout ?? Defaults.ConnectTimeout, ct)
140+
.SendRequestAsync(request, requestTimeout, requestOptions?.ConnectTimeout ?? _algoliaConfig.ConnectTimeout ?? Defaults.ConnectTimeout, ct)
141141
.ConfigureAwait(false);
142142

143143
_errorMessage = response.Error;
@@ -280,13 +280,14 @@ private static Uri BuildUri(StatefulHost host, string baseUri,
280280
/// Compute the request timeout with the given call type and configuration
281281
/// </summary>
282282
/// <param name="callType"></param>
283+
/// <param name="requestOptions"></param>
283284
/// <returns></returns>
284-
private TimeSpan GetTimeOut(CallType callType)
285+
private TimeSpan GetTimeOut(CallType callType, InternalRequestOptions requestOptions = null)
285286
{
286287
return callType switch
287288
{
288-
CallType.Read => _algoliaConfig.ReadTimeout ?? Defaults.ReadTimeout,
289-
CallType.Write => _algoliaConfig.WriteTimeout ?? Defaults.WriteTimeout,
289+
CallType.Read => requestOptions?.ReadTimeout ?? _algoliaConfig.ReadTimeout ?? Defaults.ReadTimeout,
290+
CallType.Write => requestOptions?.WriteTimeout ?? _algoliaConfig.WriteTimeout ?? Defaults.WriteTimeout,
290291
_ => Defaults.WriteTimeout
291292
};
292293
}

clients/algoliasearch-client-dart/packages/client_core/lib/src/transport/dio/dio_requester.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,12 @@ class DioRequester implements Requester {
121121
void setClientApiKey(String apiKey) {
122122
_authInterceptor.apiKey = apiKey;
123123
}
124+
125+
@override
126+
get connectTimeout => _client.options.connectTimeout;
127+
128+
@override
129+
void setConnectTimeout(Duration connectTimeout) {
130+
_client.options.connectTimeout = connectTimeout;
131+
}
124132
}

clients/algoliasearch-client-dart/packages/client_core/lib/src/transport/request_options.dart

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
/// Represents options for configuring a request to an endpoint.
22
final class RequestOptions {
3-
/// The write timeout for the request in milliseconds.
3+
/// The write timeout for the request.
44
final Duration? writeTimeout;
55

6-
/// The read timeout for the request in milliseconds.
6+
/// The read timeout for the request.
77
final Duration? readTimeout;
88

9+
/// The connect timeout for the request.
10+
final Duration? connectTimeout;
11+
912
/// Header names to their respective values to be sent with the request.
1013
final Map<String, dynamic> headers;
1114

@@ -18,18 +21,35 @@ final class RequestOptions {
1821
const RequestOptions({
1922
this.writeTimeout,
2023
this.readTimeout,
24+
this.connectTimeout,
2125
this.headers = const {},
2226
this.urlParameters = const {},
2327
this.body,
2428
});
2529

30+
RequestOptions operator +(RequestOptions? other) {
31+
if (other == null) {
32+
return this;
33+
}
34+
35+
return RequestOptions(
36+
writeTimeout: other.writeTimeout ?? writeTimeout,
37+
readTimeout: other.readTimeout ?? readTimeout,
38+
connectTimeout: other.connectTimeout ?? connectTimeout,
39+
headers: {...headers, ...other.headers},
40+
urlParameters: {...urlParameters, ...other.urlParameters},
41+
body: other.body ?? body,
42+
);
43+
}
44+
2645
@override
2746
bool operator ==(Object other) =>
2847
identical(this, other) ||
2948
other is RequestOptions &&
3049
runtimeType == other.runtimeType &&
3150
writeTimeout == other.writeTimeout &&
3251
readTimeout == other.readTimeout &&
52+
connectTimeout == other.connectTimeout &&
3353
headers == other.headers &&
3454
urlParameters == other.urlParameters &&
3555
body == other.body;
@@ -38,12 +58,13 @@ final class RequestOptions {
3858
int get hashCode =>
3959
writeTimeout.hashCode ^
4060
readTimeout.hashCode ^
61+
connectTimeout.hashCode ^
4162
headers.hashCode ^
4263
urlParameters.hashCode ^
4364
body.hashCode;
4465

4566
@override
4667
String toString() {
47-
return 'RequestOptions{writeTimeout: $writeTimeout, readTimeout: $readTimeout, headers: $headers, urlParameters: $urlParameters, body: $body}';
68+
return 'RequestOptions{writeTimeout: $writeTimeout, readTimeout: $readTimeout, connectTimeout: $connectTimeout, headers: $headers, urlParameters: $urlParameters, body: $body}';
4869
}
4970
}

clients/algoliasearch-client-dart/packages/client_core/lib/src/transport/requester.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ abstract class Requester {
1414
/// Allows to switch the API key used to authenticate requests.
1515
void setClientApiKey(String apiKey);
1616

17+
/// Allows to customise the connect timeout for the requester.
18+
get connectTimeout => null;
19+
void setConnectTimeout(Duration connectTimeout);
20+
1721
/// Closes any underlying resources that the Requester might be using.
1822
///
1923
/// By default, it does nothing (no-op), but it can be implemented to handle resource cleanup

clients/algoliasearch-client-dart/packages/client_core/lib/src/transport/retry_strategy.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,13 @@ final class RetryStrategy {
5353
final List<AlgoliaException> errors = [];
5454
for (final host in hosts) {
5555
final httpRequest = _buildRequest(host, request, callType, options);
56+
final requesterConnectTimeout = requester.connectTimeout;
57+
if (options?.connectTimeout != null) {
58+
requester.setConnectTimeout(options!.connectTimeout!);
59+
}
5660
try {
5761
final response = await requester.perform(httpRequest);
62+
requester.setConnectTimeout(requesterConnectTimeout);
5863
return response.body ?? const {};
5964
} on AlgoliaTimeoutException catch (e) {
6065
host.timedOut();

0 commit comments

Comments
 (0)