Skip to content

Releases: influxdata/influxdb-client-csharp

4.8.0

01 Dec 14:55
Compare
Choose a tag to compare

⚠️ The client can be created without InfluxDBClientFactory:

using var client = new InfluxDBClient("http://localhost:8086", "my-token");

Features

  1. #388: Initialize C# client without InfluxDBClientFactory

Bug Fixes

  1. #426: Parsing HTTP headers with duplicated name

CI

  1. #416: Add build for .NET 7.0

Dependencies

Update dependencies:

Build:

  • #418: RestSharp to 108.0.3
  • #423: Newtonsoft.Json to 13.0.2
  • #405: NodaTime.Serialization.JsonNet to 3.0.1
  • #413: CsvHelper to 30.0.1

Examples:

  • #424: Radzen.Blazor to 4.3.8

Test:

  • #422: WireMock.Net to 1.5.11
  • #412: Microsoft.NET.Test.Sdk to 17.4.0
  • #417: NUnit3TestAdapter to 4.3.1

4.7.0

03 Nov 07:40
Compare
Choose a tag to compare

Features

  1. #376: Add FluxRecord.Row which stores response data in a list
  2. #404: Expose FluxCsvParser as AnnotatedCsvParser

Dependencies

Update dependencies:

Build:

  • #397: CsvHelper to 30.0.0
  • #384: Microsoft.Extensions.ObjectPool to 6.0.10
  • #402: NodaTime to 3.1.5
  • #392: JsonSubTypes to 2.0.1

Examples:

  • #401: Radzen.Blazor to 4.1.15

Test:

  • #403: Tomlyn.Signed to 0.16.1
  • #400: WireMock.Net to 1.5.9
  • #398: NUnit3TestAdapter to 4.3.0
  • #399: coverlet.collector to 3.2.0

4.6.0

29 Sep 14:44
Compare
Choose a tag to compare

Bug Fixes

  1. #353: Support for double types in LINQ expression [LINQ]
  2. #360: Designated HealthAsync as obsolete in IInfluxDBClient

Others

  1. #368: Use builtin support for synchronous HTTP requests from RestSharp

Documentation

  1. #355: Add an example how to use EventHandler for WriteApi

Dependencies

Update dependencies:

Build:

  • #364: System.Configuration.ConfigurationManager to 6.0.1
  • #365: Microsoft.Extensions.ObjectPool to 6.0.9
  • #368: RestSharp to 108.0.2
  • #371: NodaTime to 3.1.3

Examples:

  • #375: Radzen.Blazor to 4.1.4

Test:

  • #373: Microsoft.NET.Test.Sdk to 17.3.2
  • #363: WireMock.Net to 1.5.6

4.5.0

29 Aug 05:45
Compare
Choose a tag to compare

Bug Fixes

  1. #348: Append task option at the end of script

Dependencies

Update dependencies:

Build:

  • #343: Microsoft.Extensions.ObjectPool to 6.0.8
  • #349: NodaTime to 3.1.2

Test:

  • #350: WireMock.Net to 1.5.4
  • #342: Moq to 4.18.2
  • #345: Microsoft.NET.Test.Sdk to 17.3.0

4.4.0

29 Jul 16:06
Compare
Choose a tag to compare

Bug Fixes

  1. #330: Redact the Authorization HTTP header from log

Dependencies

Update dependencies:

Build:

  • #334: CsvHelper to 28.0.1
  • #336: Microsoft.Extensions.ObjectPool to 6.0.7

Test:

  • #340: WireMock.Net to 1.5.2
  • #337: Tomlyn.Signed to 0.15.0

4.3.0

24 Jun 06:12
Compare
Choose a tag to compare

Features

  1. #327: Add interfaces to client's APIs

Bug Fixes

  1. #329: Writing data to multiple destination by the background writer

Dependencies

  1. #326: Update dependencies:

Build:

- RestSharp to 108.0.1
- NodaTime to 3.1.0
- JsonSubTypes to 1.9.0
- Microsoft.Extensions.ObjectPool to 6.0.5

Test:

- Microsoft.NET.Test.Sdk to 17.2.0
- NUnit to 3.13.3
- WireMock.Net to 1.4.43
- Moq to 4.18.1
- Tomlyn.Signed to 0.14.3

4.2.0

20 May 06:03
Compare
Choose a tag to compare

Features

  1. #319: Optionally align limit() and tail() before pivot() function [LINQ]
  2. #322: Possibility to specify default value for start and stop parameter of range function [LINQ]
  3. #323: Add callback function for handling the SSL Certificate Validation

Breaking Changes

  1. #316: Rename InvocableScripts to InvokableScripts

Bug Fixes

  1. #313: Using default org and bucket in WriteApiAsync
  2. #317: Decompress Gzipped data
  3. #317: Logging HTTP headers from streaming request

Documentation

  1. #314: Add Parameterized Queries example
  2. #315: Clarify timeout option

4.1.0

19 Apr 05:59
Compare
Choose a tag to compare

Features

  1. #304: Add InvocableScriptsApi to create, update, list, delete and invoke scripts by seamless way
  2. #308: Add support for TakeLast expression [LINQ]

Bug Fixes

  1. #305: Authentication Cookies follow redirects
  2. #309: Query expression for joins of binary operators [LINQ]

4.0.0

18 Mar 07:13
Compare
Choose a tag to compare

⚠️ The underlying RestSharp library was updated the latest major version v107. The new version of RestSharp switched from the legacy HttpWebRequest class to the standard well-known System.Net.Http.HttpClient instead. This improves performance and solves lots of issues, like hanging connections, updated protocols support, and many other problems.

Migration Notice

  • New versions of QueryApi, QueryApiSync, WriteApi, WriteApiAsync and FluxClient methods uses default named argument values so you are able to easily migrate by:
- _client.GetQueryApi().QueryAsyncEnumerable<T>(fluxQuery, token);
+ _client.GetQueryApi().QueryAsyncEnumerable<T>(fluxQuery, cancellationToken: token);

Breaking Changes

API

  • The Client no longer supports the ReadWriteTimeout for HTTP Client. This settings is not supported by the HttpClient. Use can use Timeout property instead.

  • The FluxClient uses IDisposable interface to releasing underlying HTTP connections:

    From
    var client = FluxClientFactory.Create("http://localhost:8086/");
    To
    using var client = FluxClientFactory.Create("http://localhost:8086/");
  • The Query APIs uses CancellationToken instead of ICancellable:

    From
    await QueryApi.QueryAsync(flux, (cancellable, record) =>
    {
        // process record
        Console.WriteLine($"record: {record}");
    
        if (your_condition)
        {
            // cancel stream
            source.Cancel();
        }
    })
    To
    var source = new CancellationTokenSource();
    await QueryApi.QueryAsync(flux, record =>
    {
        // process record
        Console.WriteLine($"record: {record}");
    
        if (your_condition)
        {
            // cancel stream
            source.Cancel();
        }
    }, source.Token);
  • QueryApi has changed method signatures:

    3.3.0 4.0.0
    QueryAsync(String) QueryAsync(String, String?, CancellationToken?)
    QueryAsync(String, String) QueryAsync(String, String?, CancellationToken?)
    QueryAsync(Query) QueryAsync(Query, String?, CancellationToken?)
    QueryAsync(Query, String) QueryAsync(Query, String?, CancellationToken?)
    QueryAsync(String, Type) QueryAsync(String, Type, String?, CancellationToken?)
    QueryAsync(String, String, Type) QueryAsync(String, Type, String?, CancellationToken?)
    QueryAsync(Query, Type) QueryAsync(Query, Type, String?, CancellationToken?)
    QueryAsync(Query, String, Type) QueryAsync(Query, Type, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, Object>, Action<Exception>, Action, Type) QueryAsync(String, Type, Action<Object>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, Object>, Action<Exception>, Action, Type) QueryAsync(Query, Type, Action<Object>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String) QueryAsync<T>(String, String?, CancellationToken?)
    QueryAsync<T>(String, String) QueryAsync<T>(String, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query) QueryAsync<T>(Query, String?, CancellationToken?)
    QueryAsync<T>(Query, String) QueryAsync<T>(Query, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>) `QueryAsync(Query, Action, Action?, Action?, Stri...
Read more

4.0.0-rc3

04 Mar 07:58
Compare
Choose a tag to compare

Features

  1. #295: Add possibility to put generic type object as a value for PointData and PointData.Builder