Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ua-parser/uap-csharp

Repository files navigation

ua_parser C# Library

This is the CSharp implementation of ua-parser. You can find the latest binaries on NuGet here.

Build status

The implementation uses the shared regex patterns and overrides from regexes.yaml (found in uap-core). The assembly embeds the latest regex patterns (enabled through a git submodule) which are loaded into the default parser. You can create a parser with more updated regex patterns by using the static methods on Parser to pass in specific patterns in yaml format.

Build and Run Tests:

Make sure you pull down the submodules that includes the yaml files (otherwise you won't be able to compile):

git submodule update --init --recursive

You can then build and run the tests by invoking the build.bat script

.\build.bat

Update the embedded regexes

To pull the latest regexes into the project:

cd uap-core
git pull origin master

Usage:

 using UAParser;
...
 string uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3";
 // Create the parser once and reuse it. Parser construction parses the embedded
 // yaml and builds regex structures, so avoid creating a parser per request.
 var uaParser = Parser.GetDefault();
 // get a parser using externally supplied yaml definitions
 // var uaParser = Parser.FromYaml(yamlString);
 ClientInfo c = uaParser.Parse(uaString);
 Console.WriteLine(c.UA.Family); // => "Mobile Safari"
 Console.WriteLine(c.UA.Major); // => "5"
 Console.WriteLine(c.UA.Minor); // => "1"
 Console.WriteLine(c.OS.Family); // => "iOS"
 Console.WriteLine(c.OS.Major); // => "5"
 Console.WriteLine(c.OS.Minor); // => "1"
 Console.WriteLine(c.Device.Family); // => "iPhone"

In ASP.NET Core, register the parser as a singleton and inject it where needed:

using UAParser;
builder.Services.AddSingleton(_ => Parser.GetDefault());

If you construct a parser with Parser.FromYaml(...) or Parser.GetDefault(new ParserOptions { ... }), cache and reuse that instance as well instead of creating it on each request.

Authors:

About

C# implementation of ua-parser

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /