diff --git a/Snowflake.Client.Benchmarks/Snowflake.Client.Benchmarks.csproj b/Snowflake.Client.Benchmarks/Snowflake.Client.Benchmarks.csproj index 3fc6739..4240943 100644 --- a/Snowflake.Client.Benchmarks/Snowflake.Client.Benchmarks.csproj +++ b/Snowflake.Client.Benchmarks/Snowflake.Client.Benchmarks.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net8.0 enable diff --git a/Snowflake.Client.Tests/Snowflake.Client.Tests.csproj b/Snowflake.Client.Tests/Snowflake.Client.Tests.csproj index e1ce1f6..aa57594 100644 --- a/Snowflake.Client.Tests/Snowflake.Client.Tests.csproj +++ b/Snowflake.Client.Tests/Snowflake.Client.Tests.csproj @@ -1,7 +1,7 @@  - net6.0 + net8.0 false Copyright (c) 2020-2021 Ilya Bystrov diff --git a/Snowflake.Client/RequestBuilder.cs b/Snowflake.Client/RequestBuilder.cs index 04fff78..9c0244a 100644 --- a/Snowflake.Client/RequestBuilder.cs +++ b/Snowflake.Client/RequestBuilder.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; -using System.Text; +using System.Net.Http.Json; using System.Text.Json; using System.Text.Json.Serialization; using System.Web; @@ -24,17 +24,10 @@ internal RequestBuilder(UrlInfo urlInfo) { _urlInfo = urlInfo; -#if NETSTANDARD - _jsonSerializerOptions = new JsonSerializerOptions() - { - IgnoreNullValues = true - }; -#else _jsonSerializerOptions = new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }; -#endif _clientInfo = new ClientAppInfo(); } @@ -66,8 +59,7 @@ internal HttpRequestMessage BuildLoginRequest(AuthInfo authInfo, SessionInfo ses }; var requestBody = new LoginRequest() { Data = data }; - var jsonBody = JsonSerializer.Serialize(requestBody, _jsonSerializerOptions); - var request = BuildJsonRequestMessage(requestUri, HttpMethod.Post, jsonBody); + var request = BuildJsonRequestMessage(requestUri, HttpMethod.Post, requestBody); return request; } @@ -80,8 +72,7 @@ internal HttpRequestMessage BuildCancelQueryRequest(string requestId) RequestId = requestId }; - var jsonBody = JsonSerializer.Serialize(requestBody, _jsonSerializerOptions); - var request = BuildJsonRequestMessage(requestUri, HttpMethod.Post, jsonBody); + var request = BuildJsonRequestMessage(requestUri, HttpMethod.Post, requestBody); return request; } @@ -95,8 +86,7 @@ internal HttpRequestMessage BuildRenewSessionRequest() RequestType = "RENEW" }; - var jsonBody = JsonSerializer.Serialize(requestBody, _jsonSerializerOptions); - var request = BuildJsonRequestMessage(requestUri, HttpMethod.Post, jsonBody, true); + var request = BuildJsonRequestMessage(requestUri, HttpMethod.Post, requestBody, true); return request; } @@ -112,8 +102,7 @@ internal HttpRequestMessage BuildQueryRequest(string sql, object sqlParams, bool Bindings = ParameterBinder.BuildParameterBindings(sqlParams) }; - var jsonBody = JsonSerializer.Serialize(requestBody, _jsonSerializerOptions); - var request = BuildJsonRequestMessage(queryUri, HttpMethod.Post, jsonBody); + var request = BuildJsonRequestMessage(queryUri, HttpMethod.Post, requestBody); return request; } @@ -212,15 +201,20 @@ internal Uri BuildUri(string basePath, Dictionary queryParams = return uriBuilder.Uri; } - private HttpRequestMessage BuildJsonRequestMessage(Uri uri, HttpMethod method, string jsonBody = null, bool useMasterToken = false) + private HttpRequestMessage BuildJsonRequestMessage(Uri uri, HttpMethod method, bool useMasterToken = false) + { + return BuildJsonRequestMessage(uri, method, null, useMasterToken); + } + + private HttpRequestMessage BuildJsonRequestMessage(Uri uri, HttpMethod method, T requestBody = default, bool useMasterToken = false) { var request = new HttpRequestMessage(); request.Method = method; request.RequestUri = uri; - if (jsonBody != null && method != HttpMethod.Get) + if (requestBody != null && method != HttpMethod.Get) { - request.Content = new StringContent(jsonBody, Encoding.UTF8, "application/json"); + request.Content = JsonContent.Create(requestBody, options: _jsonSerializerOptions); } if (_sessionToken != null) diff --git a/Snowflake.Client/RestClient.cs b/Snowflake.Client/RestClient.cs index 0f03524..751cbdc 100644 --- a/Snowflake.Client/RestClient.cs +++ b/Snowflake.Client/RestClient.cs @@ -1,6 +1,7 @@ using System; using System.Net; using System.Net.Http; +using System.Net.Http.Json; using System.Security.Authentication; using System.Text.Json; using System.Threading; @@ -44,14 +45,7 @@ internal async Task SendAsync(HttpRequestMessage request, CancellationToke request.Headers.ExpectContinue = false; var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, ct).ConfigureAwait(false); response.EnsureSuccessStatusCode(); - -#if NETSTANDARD - var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false); -#else - var json = await response.Content.ReadAsStringAsync(ct).ConfigureAwait(false); -#endif - - return JsonSerializer.Deserialize(json, _jsonSerializerOptions); + return await response.Content.ReadFromJsonAsync(_jsonSerializerOptions, ct).ConfigureAwait(false); } } } \ No newline at end of file diff --git a/Snowflake.Client/Snowflake.Client.csproj b/Snowflake.Client/Snowflake.Client.csproj index 2e53aa8..059c7dd 100644 --- a/Snowflake.Client/Snowflake.Client.csproj +++ b/Snowflake.Client/Snowflake.Client.csproj @@ -1,7 +1,7 @@  - netstandard2.0;net6.0 + netstandard2.0;net8.0 true 0.4.6 fixer_m @@ -18,7 +18,8 @@ Provides straightforward and efficient way to execute SQL queries in Snowflake a - + +