Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/RestSharp/RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public RestClient(HttpMessageHandler handler, bool disposeHandler = true) : this
void ConfigureHttpClient(HttpClient httpClient) {
if (Options.MaxTimeout > 0) httpClient.Timeout = TimeSpan.FromMilliseconds(Options.MaxTimeout);

if (Options.UserAgent != null && httpClient.DefaultRequestHeaders.UserAgent.All(x => x.Product?.Name != Options.UserAgent)) {
if (Options.UserAgent != null && httpClient.DefaultRequestHeaders.UserAgent.All(x => $"{x.Product?.Name}/{x.Product?.Version}" != Options.UserAgent)) {
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", Options.UserAgent);
}

Expand Down
15 changes: 15 additions & 0 deletions test/RestSharp.Tests/RestClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,19 @@ public void UseOnlySerializer_leaves_only_custom_serializer() {
Assert.Single(client.Serializers);
Assert.True(client.Serializers.ContainsKey(DataFormat.Json));
}

[Fact]
public void ConfigureHttpClient_does_not_duplicate_user_agent_for_same_client() {
// arrange
var httpClient = new HttpClient();
var clientOptions = new RestClientOptions();

// act
var restClient1 = new RestClient(httpClient, clientOptions);
var restClient2 = new RestClient(httpClient, clientOptions);

// assert
Assert.Contains(httpClient.DefaultRequestHeaders.UserAgent, agent => $"{agent.Product.Name}/{agent.Product.Version}" == clientOptions.UserAgent);
Assert.Single(httpClient.DefaultRequestHeaders.UserAgent);
}
}