Trivial 3.4.2
Please update to the latest version.
See the version list below for details.
dotnet add package Trivial --version 3.4.2
NuGet\Install-Package Trivial -Version 3.4.2
<PackageReference Include="Trivial" Version="3.4.2" />
paket add Trivial --version 3.4.2
#r "nuget: Trivial, 3.4.2"
// Install Trivial as a Cake Addin #addin nuget:?package=Trivial&version=3.4.2 // Install Trivial as a Cake Tool #tool nuget:?package=Trivial&version=3.4.2
Trivial
This library includes utilities and services for tasks, security, JSON, etc.
Tasks
using Trivial.Tasks;
Hit task
You can create a task controller to manage when a handler should be raised.
HitTask.Debounce
: You may request to call a specific action several times in a short time but only the last one should be processed and previous ones should be ignored. A sample is real-time search suggestion.HitTask.Throttle
: You may want to request to call an action only once in a short time even if you request to call several times. A sample is the submit button in a form.HitTask.Times
: You can define an action can be only processed only when request to call in the specific times range and others will be ignored. A sample is double click.HitTask.Multiple
: A handler to process for the specific times and the state will be reset after a while.
Following is an example for debounce.
// Create a task.
var task = HitTask.Debounce(() =>
{
// Do something...
}, TimeSpan.FromMilliseconds(200));
// Raise somewhere.
task.ProcessAsync();
Retry
You can create a linear retry policy by LinearRetryPolicy
or a customized one to process an action with the specific retry policy.
And you can use ObservableTask
to observe the state of an action processing.
Network
Contains the helper functions and extension functions for network, such as HTTP web client and its content.
using Trivial.Net;
And you can also use JsonHttpClient
to serialize the JSON format response with retry policy supports.
And HttpUri
for HTTP URI fields accessing.
Security
using Trivial.Security;
RSA
You can convert a PEM (OpenSSL RSA key) or an XML string to the RSAParameters
struct.
var parameters = RSAParametersConvert.Parse(pem);
And you can convert back by using the extension method ToPrivatePEMString
or ToPublicPEMString
.
And the extension method ToXElement
to XML.
Symmetric & Hash
You can use a symmetric algorithm to encrypt and decrypt a string by calling SymmetricUtilities.Encrypt
and SymmetricUtilities.DecryptText
functions.
For hash algorithm, you can call HashUtilities.ToHashString
function to get hash from a plain string and call HashUtilities.Verify
to verify.
Access token
We also provide a set of tools for OAuth including following models.
TokenInfo
The access token and other properties.AppAccessingKey
The app identifier and secret key.OAuthClient
The token container with the ability to resolve the access token and create the JSON HTTP web client to access the resources required authentication.
And you can also implement the OAuthBasedClient
base class to create your own business HTTP web client factory with OAuth supports.
JWT
You can create a JSON web token to get the string encoded by initializing a new instance of the JsonWebToken
class or the JsonWebTokenParser
class.
var sign = HashSignatureProvider.CreateHS512("a secret string");
var jwt = new JsonWebToken<JsonWebTokenPayload>(new JsonWebTokenPayload
{
Id = Guid.NewGuid().ToString("n"),
Issuer = "example"
}, sign);
// Get authenticiation header value.
var header = jwt.ToAuthenticationHeaderValue();
// Parse.
var jwtSame = JsonWebToken<Model>.Parse(jwtStr, sign); // jwtSame.ToEncodedString() == header.Parameter
Secure string
You can use the extension methods in the SecureStringExtensions
class to convert the secret between SecureString
and String
/StringBuilder
/Byte[]
.
You can also use the class RSASecretExchange
to transfer the secret with RSA encryption.
Text
using Trivial.Text;
JSON
Includes writable JSON DOM JsonObject
and JsonArray
.
And includes lots of useful converter like following.
JsonJavaScriptTicksConverter
, and its nullable value conveters and fallback converters, to convertDateTime
orDateTime?
from/to JavaScript ticks number in JSON.JsonUnixTimestampConverter
, and its nullable value conveters and fallback converters, to convertDateTime
orDateTime?
from/to Unix timestamp number in JSON.JsonNumberConverter
andJsonNumberConverter.NumberStringConverter
, to read number string in JSON.JsonStringListConverter
and its character separated converters (such asJsonStringListConverter.WhiteSpaceSeparatedConverter
), to convert a string list from/to a string in JSON.JsonObjectConverter
, to convertJsonObject
andJsonArray
.
CSV
You can read CSV file into a list of the specific models.
For example, you have a model class CsvModel
with string properties A
and B
, now you can map to the CSV file.
var csv = new CsvParser("abcd,efg\nhijk,lmn");
foreach (var model in csv.ConvertTo<CsvModel>(new[] { "A", "B" }))
{
Console.WriteLine("{0},{1}", model.A, model.B);
}
Data
using Trivial.Data;
Cache
You can save a number of model in memory cache by generic class DataCacheCollection
.
Mathematics
using Trivial.Maths;
Arithmetic
There a lot of arithmetic functions.
Arithmetic.IsPrime(2147483647); // True
Arithmetic.Gcd(192, 128); // 64
Numerals
You can get the number symbols as you want. And get the numerals in English.
EnglishNumerals.Default.ToString(12345.67);
// twelve thousand three hundred and forty-five point six seven
EnglishNumerals.Default.ToApproximationString(1234567);
// 1.2M
And ChineseNumerals
for Chinese and JapaneseNumerals
for Japanese.
Angle and polar point
Angle
Angle.PolarPoint
The point in polar coordinates.SphericalPoint
The point in spherical coordinates.
Set
NullableValueSimpleInterval<T>
Interval, such as [20, 100).
Rectangular coordinates
OneDimensionalPoint
The point in 1D (line) coordinates.TwoDimensionalPoint
The point in 2D (flat) coordinates.ThreeDimensionalPoint
The point in 3D (stereoscophic) coordinates.FourDimensionalPoint
The point in 4D (spacetime) coordinates.
Further
Product | Versions 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 is compatible. |
.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. |
-
.NETCoreApp 3.1
- No dependencies.
-
.NETStandard 2.0
- System.Text.Json (>= 4.7.1)
NuGet packages (10)
Showing the top 5 NuGet packages that depend on Trivial:
Package | Downloads |
---|---|
Trivial.Console
The console utilities and rich user interface console. |
|
Trivial.WindowsKit
Some advanced visual controls and utilities for Windows app. |
|
NuScien
A core library of NuScien framework which provides a solution to build community and enterprise projects based on resource entity and accessories with ACL and CMS built-in. |
|
Trivial.Chemistry
A library with basic chemical models. |
|
Trivial.Web
A library for web API. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
9.0.0-preview7 | 89 | 11/22/2024 | |
9.0.0-preview6 | 90 | 11/13/2024 | |
9.0.0-preview5 | 54 | 11/1/2024 | |
9.0.0-preview4 | 41 | 10/30/2024 | |
9.0.0-preview3 | 70 | 10/27/2024 | |
9.0.0-preview2 | 91 | 9/8/2024 | |
9.0.0-preview1 | 126 | 8/21/2024 | |
8.0.0 | 1,074 | 6/12/2024 | |
8.0.0-preview8 | 143 | 4/13/2024 | |
8.0.0-preview7 | 113 | 3/7/2024 | |
8.0.0-preview6 | 115 | 3/6/2024 | |
8.0.0-preview5 | 98 | 3/1/2024 | |
8.0.0-preview4 | 130 | 2/29/2024 | |
8.0.0-preview3 | 112 | 2/28/2024 | |
8.0.0-preview2 | 111 | 2/27/2024 | |
8.0.0-preview1 | 140 | 2/21/2024 | |
7.2.0 | 2,644 | 11/16/2023 | |
7.2.0-preview1 | 452 | 8/1/2023 | |
7.1.2 | 1,373 | 5/10/2023 | |
7.1.1 | 430 | 5/10/2023 | |
7.1.0 | 594 | 5/8/2023 | |
7.0.0 | 1,406 | 1/20/2023 | |
6.6.0 | 3,690 | 11/9/2022 | |
6.5.6 | 1,299 | 10/10/2022 | |
6.5.5 | 644 | 10/9/2022 | |
6.5.4 | 1,036 | 8/10/2022 | |
6.5.0 | 714 | 6/17/2022 | |
6.4.0 | 2,839 | 4/14/2022 | |
6.3.0 | 2,020 | 3/8/2022 | |
6.2.0 | 4,647 | 1/30/2022 | |
6.1.0 | 1,923 | 1/23/2022 | |
6.0.0 | 1,462 | 1/1/2022 | |
5.2.0 | 4,971 | 12/15/2021 | |
5.1.1 | 633 | 12/3/2021 | |
5.1.0 | 1,396 | 12/2/2021 | |
5.0.0 | 1,417 | 11/27/2021 | |
4.0.0 | 1,127 | 11/9/2021 | |
3.9.0 | 1,464 | 12/15/2021 | |
3.8.0 | 1,266 | 11/9/2021 | |
3.7.2 | 9,474 | 4/22/2021 | |
3.7.0 | 1,646 | 3/17/2021 | |
3.6.2 | 953 | 3/17/2021 | |
3.6.0 | 7,136 | 11/12/2020 | |
3.5.2 | 7,801 | 4/13/2020 | |
3.5.1 | 1,502 | 4/12/2020 | |
3.5.0 | 1,488 | 4/1/2020 | |
3.4.3 | 1,426 | 3/20/2020 | |
3.4.2 | 1,388 | 3/12/2020 | |
3.4.1 | 1,431 | 2/25/2020 | |
3.4.0 | 1,726 | 2/20/2020 | |
3.3.0 | 1,808 | 2/14/2020 | |
3.2.0 | 2,124 | 1/22/2020 | |
3.1.0 | 2,189 | 12/30/2019 | |
3.0.1 | 2,031 | 12/26/2019 | |
2.2.0 | 1,197 | 2/19/2020 | |
2.1.0 | 1,723 | 12/24/2019 | |
2.0.3 | 1,579 | 12/3/2019 | |
1.2.0 | 31,357 | 5/20/2019 | |
1.1.0 | 2,164 | 5/8/2019 | |
1.0.0 | 4,193 | 5/1/2019 |