From f29e3b1f3ea7f562981799b3b7a90667b30ff876 Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Wed, 26 Apr 2023 15:52:43 +0200 Subject: [PATCH 1/4] chore: update RestSharp to `110.2.0` --- Client.Core/Client.Core.csproj | 2 +- Client.Core/Internal/AbstractQueryClient.cs | 29 ++++++++++----------- Client.Core/Internal/RestSharpExtensions.cs | 2 +- Client.Legacy/FluxClient.cs | 2 +- Client.Test/WriteApiAsyncTest.cs | 3 ++- Client/Internal/ApiClient.cs | 15 +++++++++-- Client/InvokableScriptsApi.cs | 2 +- Client/QueryApi.cs | 2 +- Client/QueryApiSync.cs | 4 +-- 9 files changed, 36 insertions(+), 25 deletions(-) diff --git a/Client.Core/Client.Core.csproj b/Client.Core/Client.Core.csproj index 3b3934d8f..f1f6973a2 100644 --- a/Client.Core/Client.Core.csproj +++ b/Client.Core/Client.Core.csproj @@ -36,7 +36,7 @@ - + diff --git a/Client.Core/Internal/AbstractQueryClient.cs b/Client.Core/Internal/AbstractQueryClient.cs index b675cec82..a80f9bb7f 100644 --- a/Client.Core/Internal/AbstractQueryClient.cs +++ b/Client.Core/Internal/AbstractQueryClient.cs @@ -39,7 +39,7 @@ protected AbstractQueryClient(IFluxResultMapper mapper, FluxCsvParser csvParser) _csvParser = csvParser; } - protected Task Query(Func, RestRequest> queryFn, + protected Task Query(Func, RestRequest> queryFn, FluxCsvParser.IFluxResponseConsumer responseConsumer, Action onError, Action onComplete, CancellationToken cancellationToken) @@ -59,7 +59,7 @@ void Consumer(Stream bufferedStream) return Query(queryFn, Consumer, onError, onComplete, cancellationToken); } - protected Task QueryRaw(Func, RestRequest> queryFn, + protected Task QueryRaw(Func, RestRequest> queryFn, Action onResponse, Action onError, Action onComplete, CancellationToken cancellationToken) @@ -79,7 +79,7 @@ void Consumer(Stream bufferedStream) return Query(queryFn, Consumer, onError, onComplete, cancellationToken); } - protected void QuerySync(Func, RestRequest> queryFn, + protected void QuerySync(Func, RestRequest> queryFn, FluxCsvParser.IFluxResponseConsumer responseConsumer, Action onError, Action onComplete, @@ -100,7 +100,7 @@ void Consumer(CancellationToken cancellable, Stream bufferedStream) QuerySync(queryFn, Consumer, onError, onComplete, cancellationToken); } - private async Task Query(Func, RestRequest> queryFn, + private async Task Query(Func, RestRequest> queryFn, Action consumer, Action onError, Action onComplete, CancellationToken cancellationToken) { @@ -111,7 +111,7 @@ private async Task Query(Func, RestReque try { - var query = queryFn.Invoke(response => + var query = queryFn.Invoke((response, request) => { var result = GetStreamFromResponse(response, cancellationToken); result = AfterIntercept((int)response.StatusCode, @@ -121,7 +121,7 @@ private async Task Query(Func, RestReque RaiseForInfluxError(response, result); consumer(result); - return FromHttpResponseMessage(response); + return FromHttpResponseMessage(response, request); }); BeforeIntercept(query); @@ -144,7 +144,7 @@ private async Task Query(Func, RestReque } } - private void QuerySync(Func, RestRequest> queryFn, + private void QuerySync(Func, RestRequest> queryFn, Action consumer, Action onError, Action onComplete, CancellationToken cancellationToken) { @@ -155,7 +155,7 @@ private void QuerySync(Func, RestRequest try { - var query = queryFn.Invoke(response => + var query = queryFn.Invoke((response, request) => { var result = GetStreamFromResponse(response, cancellationToken); result = AfterIntercept((int)response.StatusCode, @@ -165,7 +165,7 @@ private void QuerySync(Func, RestRequest RaiseForInfluxError(response, result); consumer(cancellationToken, result); - return FromHttpResponseMessage(response); + return FromHttpResponseMessage(response, request); }); BeforeIntercept(query); @@ -188,13 +188,13 @@ private void QuerySync(Func, RestRequest } protected async IAsyncEnumerable QueryEnumerable( - Func, RestRequest> queryFn, Func convert, + Func, RestRequest> queryFn, Func convert, [EnumeratorCancellation] CancellationToken cancellationToken) { Arguments.CheckNotNull(queryFn, nameof(queryFn)); Stream stream = null; - var query = queryFn.Invoke(response => + var query = queryFn.Invoke((response, request) => { stream = GetStreamFromResponse(response, cancellationToken); stream = AfterIntercept((int)response.StatusCode, @@ -202,7 +202,7 @@ protected async IAsyncEnumerable QueryEnumerable( RaiseForInfluxError(response, stream); - return FromHttpResponseMessage(response); + return FromHttpResponseMessage(response, request); }); BeforeIntercept(query); @@ -381,10 +381,9 @@ public void Accept(int index, FluxRecord record) } } - private RestResponse FromHttpResponseMessage(HttpResponseMessage response) + private RestResponse FromHttpResponseMessage(HttpResponseMessage response, RestRequest request) { - return new RestResponse - { + return new RestResponse(request) { ErrorException = response.IsSuccessStatusCode ? null : new HttpRequestException($"Request failed with status code {response.StatusCode}") diff --git a/Client.Core/Internal/RestSharpExtensions.cs b/Client.Core/Internal/RestSharpExtensions.cs index 28efda99b..fcb01b114 100644 --- a/Client.Core/Internal/RestSharpExtensions.cs +++ b/Client.Core/Internal/RestSharpExtensions.cs @@ -28,7 +28,7 @@ internal static IEnumerable ToHeaderParameters(this HttpHeaders } internal static RestRequest AddAdvancedResponseHandler(this RestRequest restRequest, - Func advancedResponseWriter) + Func advancedResponseWriter) { var field = restRequest.GetType() .GetField("_advancedResponseHandler", BindingFlags.Instance | BindingFlags.NonPublic); diff --git a/Client.Legacy/FluxClient.cs b/Client.Legacy/FluxClient.cs index 0d88e335f..1c6e935dd 100644 --- a/Client.Legacy/FluxClient.cs +++ b/Client.Legacy/FluxClient.cs @@ -423,7 +423,7 @@ private RestRequest PingRequest() return new RestRequest("ping"); } - private Func, RestRequest> QueryRequest(string query) + private Func, RestRequest> QueryRequest(string query) { return advancedResponseWriter => new RestRequest("api/v2/query", Method.Post) .AddAdvancedResponseHandler(advancedResponseWriter) diff --git a/Client.Test/WriteApiAsyncTest.cs b/Client.Test/WriteApiAsyncTest.cs index 76a8a16f6..90c613bc2 100644 --- a/Client.Test/WriteApiAsyncTest.cs +++ b/Client.Test/WriteApiAsyncTest.cs @@ -263,7 +263,8 @@ private string GetRequestBody(RestResponse restResponse) { var bytes = (byte[])restResponse.Request?.Parameters .GetParameters(ParameterType.RequestBody) - .TryFind("text/plain")?.Value ?? + .First() + .Value ?? throw new AssertionException("The body is required."); return Encoding.Default.GetString(bytes); } diff --git a/Client/Internal/ApiClient.cs b/Client/Internal/ApiClient.cs index 696cc114d..397864fd6 100644 --- a/Client/Internal/ApiClient.cs +++ b/Client/Internal/ApiClient.cs @@ -25,6 +25,8 @@ public partial class ApiClient private bool _initializedSessionTokens = false; private bool _signout; + private IAuthenticator _authenticator; + private CookieContainer _cookieContainerCookieContainer; public ApiClient(InfluxDBClientOptions options, LoggingHandler loggingHandler, GzipHandler gzipHandler) { @@ -91,6 +93,9 @@ internal void BeforeIntercept(RestRequest request) { InitToken(); } + + request.CookieContainer = _cookieContainerCookieContainer; + request.Authenticator = _authenticator; _loggingHandler.BeforeIntercept(request); _gzipHandler.BeforeIntercept(request); @@ -141,7 +146,12 @@ private void InitToken() .FirstOrDefault(it => string.Equals("Set-Cookie", it.Name, StringComparison.OrdinalIgnoreCase)); - RestClient.Authenticator = new CookieRedirectAuthenticator(headerParameter); + _authenticator = new CookieRedirectAuthenticator(headerParameter); + } + else + { + _cookieContainerCookieContainer = new CookieContainer(); + _cookieContainerCookieContainer.Add(authResponse.Cookies); } } } @@ -159,10 +169,11 @@ protected internal void Signout() _signout = true; _initializedSessionTokens = false; + _cookieContainerCookieContainer = null; var request = new RestRequest("/api/v2/signout", Method.Post); RestClient.ExecuteAsync(request).ConfigureAwait(false).GetAwaiter().GetResult(); - RestClient.Authenticator = null; + _authenticator = null; } } diff --git a/Client/InvokableScriptsApi.cs b/Client/InvokableScriptsApi.cs index 79f4b06af..c26d1d373 100644 --- a/Client/InvokableScriptsApi.cs +++ b/Client/InvokableScriptsApi.cs @@ -300,7 +300,7 @@ private Task InvokeScript(string scriptId, FluxCsvParser.IFluxResponseConsumer c cancellationToken); } - private Func, RestRequest> CreateRequest(string scriptId, + private Func, RestRequest> CreateRequest(string scriptId, Dictionary bindParams = default) { Arguments.CheckNonEmptyString(scriptId, nameof(scriptId)); diff --git a/Client/QueryApi.cs b/Client/QueryApi.cs index ad2d8254c..f7efd9e05 100644 --- a/Client/QueryApi.cs +++ b/Client/QueryApi.cs @@ -783,7 +783,7 @@ private Task QueryAsync(Query query, FluxCsvParser.IFluxResponseConsumer consume cancellationToken); } - private Func, RestRequest> CreateRequest(Query query, string org = null) + private Func, RestRequest> CreateRequest(Query query, string org = null) { Arguments.CheckNotNull(query, nameof(query)); diff --git a/Client/QueryApiSync.cs b/Client/QueryApiSync.cs index 30cbb2a44..3344c8a66 100644 --- a/Client/QueryApiSync.cs +++ b/Client/QueryApiSync.cs @@ -136,7 +136,7 @@ public List QuerySync(Query query, string org = null, CancellationToken ca var consumer = new FluxResponseConsumerPoco(poco => { measurements.Add(poco); }, Mapper); - RestRequest QueryFn(Func advancedResponseWriter) + RestRequest QueryFn(Func advancedResponseWriter) { return _service .PostQueryWithRestRequest(null, "application/json", null, optionsOrg, null, query) @@ -188,7 +188,7 @@ public List QuerySync(Query query, string org = null, CancellationTok var optionsOrg = org ?? _options.Org; Arguments.CheckNonEmptyString(optionsOrg, OrgArgumentValidation); - RestRequest QueryFn(Func advancedResponseWriter) + RestRequest QueryFn(Func advancedResponseWriter) { return _service .PostQueryWithRestRequest(null, "application/json", null, optionsOrg, null, query) From da3148f44e329ff6594bc3610981f3b06835ba01 Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Wed, 26 Apr 2023 15:57:45 +0200 Subject: [PATCH 2/4] fix: code style --- CHANGELOG.md | 1 + Client.Core/Internal/AbstractQueryClient.cs | 6 ++++-- Client/Internal/ApiClient.cs | 2 +- Client/QueryApi.cs | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c200a8a93..434ebc962 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Update dependencies: - [#497](https://github.com/influxdata/influxdb-client-csharp/pull/497): `NodaTime` to `3.1.9` - [#485](https://github.com/influxdata/influxdb-client-csharp/pull/485): `Newtonsoft.Json` to `13.0.3` - [#506](https://github.com/influxdata/influxdb-client-csharp/pull/506): `Microsoft.Extensions.ObjectPool` to `7.0.5` + - [#509](https://github.com/influxdata/influxdb-client-csharp/pull/509): `RestSharp` to `110.2.0` #### Examples: - [#511](https://github.com/influxdata/influxdb-client-csharp/pull/511): `Radzen.Blazor` to `4.10.1` diff --git a/Client.Core/Internal/AbstractQueryClient.cs b/Client.Core/Internal/AbstractQueryClient.cs index a80f9bb7f..c4d65b749 100644 --- a/Client.Core/Internal/AbstractQueryClient.cs +++ b/Client.Core/Internal/AbstractQueryClient.cs @@ -188,7 +188,8 @@ private void QuerySync(Func } protected async IAsyncEnumerable QueryEnumerable( - Func, RestRequest> queryFn, Func convert, + Func, RestRequest> queryFn, + Func convert, [EnumeratorCancellation] CancellationToken cancellationToken) { Arguments.CheckNotNull(queryFn, nameof(queryFn)); @@ -383,7 +384,8 @@ public void Accept(int index, FluxRecord record) private RestResponse FromHttpResponseMessage(HttpResponseMessage response, RestRequest request) { - return new RestResponse(request) { + return new RestResponse(request) + { ErrorException = response.IsSuccessStatusCode ? null : new HttpRequestException($"Request failed with status code {response.StatusCode}") diff --git a/Client/Internal/ApiClient.cs b/Client/Internal/ApiClient.cs index 397864fd6..8b9779a1b 100644 --- a/Client/Internal/ApiClient.cs +++ b/Client/Internal/ApiClient.cs @@ -93,7 +93,7 @@ internal void BeforeIntercept(RestRequest request) { InitToken(); } - + request.CookieContainer = _cookieContainerCookieContainer; request.Authenticator = _authenticator; diff --git a/Client/QueryApi.cs b/Client/QueryApi.cs index f7efd9e05..361d10457 100644 --- a/Client/QueryApi.cs +++ b/Client/QueryApi.cs @@ -783,7 +783,8 @@ private Task QueryAsync(Query query, FluxCsvParser.IFluxResponseConsumer consume cancellationToken); } - private Func, RestRequest> CreateRequest(Query query, string org = null) + private Func, RestRequest> CreateRequest(Query query, + string org = null) { Arguments.CheckNotNull(query, nameof(query)); From d476d40b0df5fab7cb8a5e07de8571977cedb3c6 Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Thu, 27 Apr 2023 08:57:28 +0200 Subject: [PATCH 3/4] chore: use RestSharp `110.1.0` --- Client.Core/Client.Core.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client.Core/Client.Core.csproj b/Client.Core/Client.Core.csproj index f1f6973a2..bb57b137e 100644 --- a/Client.Core/Client.Core.csproj +++ b/Client.Core/Client.Core.csproj @@ -36,7 +36,7 @@ - + From 54e472648bf50a41bf8ca1abb55a92410e6c37b0 Mon Sep 17 00:00:00 2001 From: Jakub Bednar Date: Thu, 27 Apr 2023 09:07:54 +0200 Subject: [PATCH 4/4] fix: set correct target for tests solutions --- .circleci/config.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index d2cc971c9..925d13c90 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -146,6 +146,12 @@ jobs: - image: *default-dotnet-image steps: - checkout + - run: | + sed -i '/netcoreapp3.1;net5.0;net6.0;net7.0<\/TargetFrameworks>/c\'net7.0'<\/TargetFramework>' Client.Core.Test/Client.Core.Test.csproj + sed -i '/netcoreapp3.1;net5.0;net6.0;net7.0<\/TargetFrameworks>/c\'net7.0'<\/TargetFramework>' Client.Test/Client.Test.csproj + sed -i '/netcoreapp3.1;net5.0;net6.0;net7.0<\/TargetFrameworks>/c\'net7.0'<\/TargetFramework>' Client.Legacy.Test/Client.Legacy.Test.csproj + sed -i '/netcoreapp3.1;net5.0;net6.0;net7.0<\/TargetFrameworks>/c\'net7.0'<\/TargetFramework>' Client.Linq.Test/Client.Linq.Test.csproj + sed -i '/netcoreapp3.1;net5.0;net6.0;net7.0<\/TargetFrameworks>/c\'net7.0'<\/TargetFramework>' Examples/Examples.csproj - run: name: Check compilation warnings command: | pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy