Skip to content

Commit dbd958b

Browse files
authored
Add UserAgent to IRequestConfiguration (#140)
As titled. Closes #137
1 parent 4557279 commit dbd958b

File tree

7 files changed

+30
-12
lines changed

7 files changed

+30
-12
lines changed

src/Elastic.Transport/Components/Pipeline/RequestData.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public RequestData(ITransportConfiguration global, IRequestConfiguration? local
3939
ProxyUsername = global.ProxyUsername;
4040
ProxyPassword = global.ProxyPassword;
4141
DisableAutomaticProxyDetection = global.DisableAutomaticProxyDetection;
42-
UserAgent = global.UserAgent;
42+
UserAgent = global.UserAgent ?? local?.UserAgent ?? RequestConfiguration.DefaultUserAgent;
4343
KeepAliveInterval = (int)(global.KeepAliveInterval?.TotalMilliseconds ?? 2000);
4444
KeepAliveTime = (int)(global.KeepAliveTime?.TotalMilliseconds ?? 2000);
4545
RunAs = local?.RunAs ?? global.RunAs;
@@ -135,7 +135,7 @@ public RequestData(ITransportConfiguration global, IRequestConfiguration? local
135135
public string? ProxyUsername { get; }
136136
/// <inheritdoc cref="ITransportConfiguration.SkipDeserializationForStatusCodes"/>
137137
public IReadOnlyCollection<int> SkipDeserializationForStatusCodes { get; }
138-
/// <inheritdoc cref="ITransportConfiguration.UserAgent"/>
138+
/// <inheritdoc cref="IRequestConfiguration.UserAgent"/>
139139
public UserAgent UserAgent { get; }
140140
/// <inheritdoc cref="ITransportConfiguration.DnsRefreshTimeout"/>
141141
public TimeSpan DnsRefreshTimeout { get; }

src/Elastic.Transport/Configuration/IRequestConfiguration.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,10 @@ public interface IRequestConfiguration
152152
/// Holds additional meta data about the request.
153153
/// </summary>
154154
RequestMetaData? RequestMetaData { get; }
155+
156+
/// <summary>
157+
/// The user agent string to send with requests. Useful for debugging purposes to understand client and framework
158+
/// versions that initiate requests to Elasticsearch
159+
/// </summary>
160+
UserAgent? UserAgent { get; }
155161
}

src/Elastic.Transport/Configuration/ITransportConfiguration.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,6 @@ public interface ITransportConfiguration : IRequestConfiguration, IDisposable
170170
/// </summary>
171171
UrlFormatter UrlFormatter { get; }
172172

173-
/// <summary>
174-
/// The user agent string to send with requests. Useful for debugging purposes to understand client and framework
175-
/// versions that initiate requests to Elasticsearch
176-
/// </summary>
177-
UserAgent UserAgent { get; }
178-
179173
/// <summary>
180174
/// Allow you to override the status code inspection that sets <see cref="ApiCallDetails.HasSuccessfulStatusCode"/>
181175
/// <para>

src/Elastic.Transport/Configuration/RequestConfiguration.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public record RequestConfiguration : IRequestConfiguration
2121
/// <summary> The default ping timeout when the connection is over HTTPS. Defaults to 5 seconds </summary>
2222
public static readonly TimeSpan DefaultPingTimeoutOnSsl = TimeSpan.FromSeconds(5);
2323

24+
/// <summary> The default user-agent.</summary>
25+
public static readonly UserAgent DefaultUserAgent = UserAgent.Create("elastic-transport-net");
26+
2427
/// <inheritdoc cref="IRequestConfiguration"/>
2528
public RequestConfiguration()
2629
{
@@ -63,6 +66,7 @@ public RequestConfiguration(IRequestConfiguration config)
6366
ParseAllHeaders = config.ParseAllHeaders;
6467
RequestMetaData = config.RequestMetaData;
6568
ResponseBuilders = config.ResponseBuilders;
69+
UserAgent = config.UserAgent;
6670
}
6771

6872
/// <inheritdoc />
@@ -145,4 +149,7 @@ public RequestConfiguration(IRequestConfiguration config)
145149

146150
/// <inheritdoc />
147151
public RequestMetaData? RequestMetaData { get; init; }
152+
153+
/// <inheritdoc />
154+
public UserAgent? UserAgent { get; init; }
148155
}

src/Elastic.Transport/Configuration/RequestConfigurationDescriptor.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public RequestConfigurationDescriptor(IRequestConfiguration config)
5454
_parseAllHeaders = config.ParseAllHeaders;
5555
_requestMetaData = config.RequestMetaData;
5656
_responseBuilders = [.. config.ResponseBuilders];
57+
_userAgent = config.UserAgent;
5758
}
5859

5960
private string? _accept;
@@ -83,6 +84,7 @@ public RequestConfigurationDescriptor(IRequestConfiguration config)
8384
private bool? _enableThreadPoolStats;
8485
private RequestMetaData? _requestMetaData;
8586
private List<IResponseBuilder>? _responseBuilders;
87+
private UserAgent? _userAgent;
8688

8789
/// <inheritdoc cref="IRequestConfiguration.RunAs"/>
8890
public RequestConfigurationDescriptor RunAs(string username)
@@ -289,6 +291,13 @@ public RequestConfigurationDescriptor ResponseBuilder(IResponseBuilder responseB
289291
return this;
290292
}
291293

294+
/// <inheritdoc cref="IRequestConfiguration.UserAgent" />
295+
public RequestConfigurationDescriptor UserAgent(UserAgent userAgent)
296+
{
297+
_userAgent = userAgent;
298+
return this;
299+
}
300+
292301
string? IRequestConfiguration.Accept => _accept;
293302

294303
IReadOnlyCollection<int>? IRequestConfiguration.AllowedStatusCodes => _allowedStatusCodes;
@@ -342,4 +351,6 @@ public RequestConfigurationDescriptor ResponseBuilder(IResponseBuilder responseB
342351
RequestMetaData? IRequestConfiguration.RequestMetaData => _requestMetaData;
343352

344353
IReadOnlyCollection<IResponseBuilder> IRequestConfiguration.ResponseBuilders => _responseBuilders ?? [];
354+
355+
UserAgent? IRequestConfiguration.UserAgent => _userAgent;
345356
}

src/Elastic.Transport/Configuration/TransportConfigurationDescriptor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ protected TransportConfigurationDescriptorBase(ITransportConfiguration config)
279279
bool ITransportConfiguration.SniffsOnConnectionFault => _sniffsOnConnectionFault;
280280
bool ITransportConfiguration.SniffsOnStartup => _sniffsOnStartup;
281281
UrlFormatter ITransportConfiguration.UrlFormatter => _urlFormatter;
282-
UserAgent ITransportConfiguration.UserAgent => _userAgent;
282+
UserAgent IRequestConfiguration.UserAgent => _userAgent;
283283
Func<HttpMethod, int, bool> ITransportConfiguration.StatusCodeToResponseSuccess => _statusCodeToResponseSuccess;
284284
TimeSpan ITransportConfiguration.DnsRefreshTimeout => _dnsRefreshTimeout;
285285
bool ITransportConfiguration.PrettyJson => _prettyJson;
@@ -513,7 +513,7 @@ public T ClientCertificate(string certificatePath) =>
513513
public T SkipDeserializationForStatusCodes(params int[] statusCodes) =>
514514
Assign(new ReadOnlyCollection<int>(statusCodes), static (a, v) => a._skipDeserializationForStatusCodes = v);
515515

516-
/// <inheritdoc cref="ITransportConfiguration.UserAgent"/>
516+
/// <inheritdoc cref="IRequestConfiguration.UserAgent"/>
517517
public T UserAgent(UserAgent userAgent) => Assign(userAgent, static (a, v) => a._userAgent = v);
518518

519519
/// <inheritdoc cref="IRequestConfiguration.TransferEncodingChunked"/>

src/Elastic.Transport/Configuration/UserAgent.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ public sealed class UserAgent
2525
{
2626
private readonly string _toString;
2727

28-
private UserAgent(string reposName, Type typeVersionLookup, string[] metadata = null)
28+
private UserAgent(string reposName, Type typeVersionLookup, string[]? metadata = null)
2929
{
3030
var version = typeVersionLookup.Assembly
3131
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
3232
.InformationalVersion;
3333

34-
var meta = string.Join("; ", metadata ?? Array.Empty<string>());
34+
var meta = string.Join("; ", metadata ?? []);
3535
var assemblyName = typeVersionLookup.Assembly.GetName().Name;
3636

3737
_toString = $"{reposName}/{version} ({RuntimeInformation.OSDescription}; {RuntimeInformation.FrameworkDescription}; {assemblyName}{meta.Trim()})";

0 commit comments

Comments
 (0)