예제 #1
0
        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
            });
        }
예제 #2
0
        /// <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));
        }