Thingsboard.Net.Flurl.DependencyInjection 3.5.1.5

dotnet add package Thingsboard.Net.Flurl.DependencyInjection --version 3.5.1.5
NuGet\Install-Package Thingsboard.Net.Flurl.DependencyInjection -Version 3.5.1.5
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Thingsboard.Net.Flurl.DependencyInjection" Version="3.5.1.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Thingsboard.Net.Flurl.DependencyInjection --version 3.5.1.5
#r "nuget: Thingsboard.Net.Flurl.DependencyInjection, 3.5.1.5"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Thingsboard.Net.Flurl.DependencyInjection as a Cake Addin
#addin nuget:?package=Thingsboard.Net.Flurl.DependencyInjection&version=3.5.1.5

// Install Thingsboard.Net.Flurl.DependencyInjection as a Cake Tool
#tool nuget:?package=Thingsboard.Net.Flurl.DependencyInjection&version=3.5.1.5

Thingsboard.Net

Build status CodeQL GitHub license

Thingsboard.NET is a .NET client library for Thingsboard IoT Platform. It is a .NET Standard 2.0 library, so it can be used in .NET Core and .NET Framework applications.

All client API are tested in Thingsboard v3.4.x

Nuget packages

Name Version Downloads
Thingsboard.Net.Abstractions nuget stats
Thingsboard.Net.Flurl nuget stats
Thingsboard.Net.Flurl.DependencyInjection nuget stats

Usage

Creating a client and trying to invoke getCurrentUser method:

Basic usage

Install the NuGet package Thingsboard.Net.Flurl.

PM> Install-Package Thingsboard.NET.Flurl

Then put following code into your project

// Initial factory
var factory = new FlurlTbClientFactory
{
    Options = new ThingsboardNetFlurlOptions()
    {
        BaseUrl  = "http://localhost:8080",
        Username = "tenant@thingsboard.org",
        Password = "tenant",
    }
};

// Get the client
var authClient = factory.CreateAuthClient();
var userInfo = await authClient.GetCurrentUserAsync();
Console.WriteLine($"Hello {userInfo.Email}");

You will get the output from console:

Hello tenant@thingsboard.org

Integration to ASP.NET Core

You can use the Thingsboard.NET.Flurl library in ASP.NET Core applications. Te dependency injection mode is supported.

First, add the Thingsboard.NET.Flurl.DependencyInjection library to your project:

PM> Install-Package Thingsboard.NET.Flurl.DependencyInjection

Then, register the Thingsboard.NET.Flurl services in the ConfigureServices method of Startup.cs:

// add package "Thingsboard.Net.Flurl.DependencyInjection" Version="3.4.1.1"
serviceBuilder.AddThingsboardNet(options =>
{
    options.Username = "tenant@thingsboard.org";
    options.Password = "tenant";
    options.BaseUrl  = "http://localhost:8080";
});

Then you can inject the client factory in your controllers:

public class HomeController : Controller
{
    private readonly ITbAuthClient _authClient;

    public HomeController(ITbAuthClient authClient)
    {
        _authClient = authClient;
    }

    public async Task<IActionResult> Index()
    {
        var userInfo = await _authClient.GetCurrentUserAsync();
        return View(userInfo);
    }
}

Customization options

You can customize the client options before invoke RPC methods:

public class HomeController : Controller
{
    private readonly ITbAuthClient _authClient;

    public HomeController(ITbAuthClient authClient)
    {
        _authClient = authClient;
    }

    public async Task<IActionResult> Index()
    {
        var userInfo = await auth
            .WithCredentials("newuser@thingsboard.com", "your-password")
            .WithBaseUrl("https://tb-server")
            .GetCurrentUserAsync();
        return View(userInfo);
    }
}

Thanks

  • Thanks to Flurl for the great HTTP library.
  • Thanks to Thingsboard for the great IoT platform.
  • Thanks to Polly for the great resilience and transient-fault-handling library.

Final

Leave a comment on GitHub if you have any questions or suggestions.

Turn on the star if you like this project.

License

This project is licensed under the MIT License

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.5.1.5 178 10/11/2023
3.5.1.4 174 7/7/2023
3.5.1.2 118 7/7/2023
3.5.1 119 7/7/2023
3.4.33 267 3/22/2023
3.4.32 191 3/14/2023
3.4.31 239 3/13/2023
3.4.30 200 3/7/2023
3.4.29 202 3/7/2023
3.4.28 194 3/7/2023
3.4.27 183 3/7/2023
3.4.26 204 3/7/2023
3.4.25 206 3/6/2023
3.4.24 200 3/6/2023
3.4.23 203 3/3/2023
3.4.22 213 3/3/2023
3.4.21 215 3/3/2023
3.4.20 214 2/27/2023
3.4.19 233 2/6/2023
3.4.18 307 1/4/2023
3.4.17 260 1/4/2023
3.4.16 311 11/22/2022
3.4.15 307 11/15/2022
3.4.14 332 11/14/2022
3.4.13 319 11/10/2022
3.4.12 315 11/10/2022
3.4.11 350 10/28/2022
3.4.10 355 10/22/2022
3.4.9 356 10/22/2022
3.4.8 367 10/22/2022
3.4.7 378 10/21/2022
3.4.6 351 10/21/2022
3.4.5 381 10/20/2022
3.4.3 355 10/18/2022
3.4.1.9 694 10/18/2022
3.4.1.4 382 10/17/2022
3.4.1.1 367 10/17/2022