diff --git a/src/Meilisearch/Extensions/HttpExtensions.cs b/src/Meilisearch/Extensions/HttpExtensions.cs index a03c98cf..8fdfe68b 100644 --- a/src/Meilisearch/Extensions/HttpExtensions.cs +++ b/src/Meilisearch/Extensions/HttpExtensions.cs @@ -74,6 +74,13 @@ public static void AddApiKeyToHeader(this HttpClient client, string apiKey) } } + public static void AddDefaultUserAgent(this HttpClient client) + { + var version = new Version(); + + client.DefaultRequestHeaders.Add("User-Agent", version.GetQualifiedVersion()); + } + private static StringContent PrepareJsonPayload(T body, JsonSerializerOptions options = null) { options = options ?? Constants.JsonSerializerOptionsWriteNulls; diff --git a/src/Meilisearch/MeilisearchClient.cs b/src/Meilisearch/MeilisearchClient.cs index cf2e8c98..9c91060a 100644 --- a/src/Meilisearch/MeilisearchClient.cs +++ b/src/Meilisearch/MeilisearchClient.cs @@ -26,10 +26,11 @@ public class MeilisearchClient /// /// URL corresponding to Meilisearch server. /// API Key to connect to the Meilisearch server. - public MeilisearchClient(string url, string apiKey = default) + public MeilisearchClient(string url, string apiKey = default, HttpClient client = null) { _http = new HttpClient(new MeilisearchMessageHandler(new HttpClientHandler())) { BaseAddress = new Uri(url) }; _http.AddApiKeyToHeader(apiKey); + _http.AddDefaultUserAgent(); _taskEndpoint = null; } @@ -43,6 +44,7 @@ public MeilisearchClient(HttpClient client, string apiKey = default) { _http = client; _http.AddApiKeyToHeader(apiKey); + _http.AddDefaultUserAgent(); } /// diff --git a/tests/Meilisearch.Tests/MeilisearchClientTests.cs b/tests/Meilisearch.Tests/MeilisearchClientTests.cs index 80e3d6b0..0ad0a93f 100644 --- a/tests/Meilisearch.Tests/MeilisearchClientTests.cs +++ b/tests/Meilisearch.Tests/MeilisearchClientTests.cs @@ -145,5 +145,16 @@ public async Task DeleteIndex() var finishedTask = await _defaultClient.Index(indexUid).WaitForTaskAsync(task.Uid); Assert.Equal("succeeded", finishedTask.Status); } + + [Fact] + public void GetDefaultUserAgentHeader() + { + var httpClient = ClientFactory.Instance.CreateClient(); + var client = new MeilisearchClient(httpClient); + var userAgent = string.Join(' ', httpClient.DefaultRequestHeaders.GetValues("User-Agent")); + var version = new Version(); + + Assert.Equal(version.GetQualifiedVersion(), userAgent); + } } }