public DeviceInfo BuildFromEventData(string userAgent) { var dd = new DeviceDetector(userAgent); dd.Parse(); var client = (BrowserMatchResult)dd.GetClient().Matches.First(r => r is BrowserMatchResult); var os = dd.GetOs(); if (!BrowserParser.GetBrowserFamily(client.ShortName, out var browserFamily)) { browserFamily = client.ShortName; } if (!OperatingSystemParser.GetOsFamily(os.Match.ShortName, out var osFamily) || osFamily == "GNU/Linux") { osFamily = os.Match.ShortName; } return(new DeviceInfo { Browser = new BrowserInfo() { Name = client.Name + " " + client.Version, Type = browserFamily }, DeviceType = dd.GetDeviceName(), OperatingSystem = new OsInfo() { Name = os.Match.Platform + " " + os.Match.Name + " " + os.Match.Version, Type = osFamily }, UserAgent = userAgent }); }
/// <summary> /// Parses a useragent and returns the detected data /// /// ATTENTION: Use that method only for testing or very small applications /// To get fast results from DeviceDetector you need to make your own implementation, /// that should use one of the caching mechanisms. See README.md for more information. /// /// </summary> /// <param name="ua">UserAgent to parse</param> /// <returns></returns> public static ParseResult <DeviceDetectorResult> GetInfoFromUserAgent(string ua) { var result = new ParseResult <DeviceDetectorResult>(); var deviceDetector = new DeviceDetector(ua); deviceDetector.Parse(); var match = new DeviceDetectorResult { UserAgent = deviceDetector.userAgent }; if (deviceDetector.IsBot()) { match.Bot = deviceDetector.bot.Match; } match.Os = deviceDetector.os.Match; match.Client = deviceDetector.client.Match; match.DeviceType = deviceDetector.GetDeviceName(); match.DeviceBrand = deviceDetector.brand; match.DeviceModel = deviceDetector.model; if (deviceDetector.os.Success) { OperatingSystemParser.GetOsFamily(deviceDetector.os.Match.ShortName, out var osFamily); match.OsFamily = osFamily; } if (!(deviceDetector.client.Match is BrowserMatchResult browserMatch)) { return(result.Add(match)); } BrowserParser.GetBrowserFamily(browserMatch.ShortName, out var browserFamily); match.BrowserFamily = browserFamily; return(result.Add(match)); }