This is the CSharp implementation of ua-parser. You can find the latest binaries on NuGet here.
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.
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
To pull the latest regexes into the project:
cd uap-core
git pull origin master
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.
- Søren Enemærke @sorenenemaerke / github
- Atif Aziz @raboof / github