Ng.UserAgentService
3.0.0
dotnet add package Ng.UserAgentService --version 3.0.0
NuGet\Install-Package Ng.UserAgentService -Version 3.0.0
<PackageReference Include="Ng.UserAgentService" Version="3.0.0" />
paket add Ng.UserAgentService --version 3.0.0
#r "nuget: Ng.UserAgentService, 3.0.0"
// Install Ng.UserAgentService as a Cake Addin #addin nuget:?package=Ng.UserAgentService&version=3.0.0 // Install Ng.UserAgentService as a Cake Tool #tool nuget:?package=Ng.UserAgentService&version=3.0.0
UserAgentService
<a href="https://www.nuget.org/packages/Ng.UserAgentService"><img src="https://img.shields.io/nuget/v/Ng.UserAgentService.svg" alt="NuGet Version" /></a> <a href="https://www.nuget.org/packages/Ng.UserAgentService"><img src="https://img.shields.io/nuget/dt/Ng.UserAgentService.svg" alt="NuGet Download Count" /></a>
A service to parse user-agent strings in C#. UserAgentService is extremely fast because it uses in-memory caching. UserAgentService only looks at the first 512 characters of the useragent string, it ignores the rest of the string. Most user-agent strings are within this limit but this limitation is introduced to protect itself from malicious, extremely long, hand crafted, user-agent strings.
Dependancies
Microsoft.Extensions.Caching.Memory
Microsoft.Extensions.Options
Installing
Install from Nuget
Install-Package Ng.UserAgentService
Usage
Console application
using Ng.Services;
...
//You do not have to specify any settings if you want to use the defaults
var settings = new UserAgentSettings
{
CacheSizeLimit = 20000, //Default: 10000
CacheSlidingExpiration = TimeSpan.FromDays(1), //Default: TimeSpan.FromDays(3)
UaStringSizeLimit = 256, //Default: 512
};
var userAgentService = new UserAgentService(settings);
var ua = userAgentService.Parse("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0");
var isBrowser = ua.IsBrowser; // true
var isRobot = ua.IsRobot; // false
var isMobile = ua.IsMobile; // false
var platform = ua.Platform; // Windows 7
var bowser = ua.Browser; // Firefox
var version = ua.BrowserVersion; // 47.0
var mobile = ua.Mobile; // empty string
var robot = ua.Robot; // empty string
ASP.NET Core
Register service with dependency injection in Startup.cs
using Ng.Services;
...
public void ConfigureServices(IServiceCollection services)
{
services.AddUserAgentService(); //Is equivalent to services.AddSingleton<IUserAgentService, UserAgentService>();
or
services.AddUserAgentService(options => {
options.CacheSizeLimit = 20000; //Default: 10000
options.CacheSlidingExpiration = TimeSpan.FromDays(1); //Default: TimeSpan.FromDays(3)
options.UaStringSizeLimit = 256; //Default: 512
});
or
services.AddSingleton<IUserAgentService, UserAgentService>(); //Is equivalent to services.AddUserAgentService();
}
Inject IUserAgentService into a Controller or wherever you like
using Ng.Services;
...
public class MyController
{
public MyController(IUserAgentService userAgentService) // <-- Inject IUserAgentService here
{
string userAgentString = Request.Headers["User-Agent"].ToString();
UserAgent ua = userAgentService.Parse(userAgentString);
}
}
License
This project is licensed under the MIT License.
Contributions
Contributions are welcome.
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 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. |
-
.NETStandard 2.0
- Microsoft.Extensions.Caching.Memory (>= 8.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Ng.UserAgentService:
Package | Downloads |
---|---|
SplatDev.Umbraco.Plugins.SimpleAnalytics
Analytics script and dashboard for Umbraco v8.18.8 |
|
newdcm.Tools
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Ng.UserAgentService:
Repository | Stars |
---|---|
streetwriters/notesnook-sync-server
Sync server for Notesnook (self-hosting in alpha)
|
Updating dependencies