예제 #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
        private bool UsesMobileBrowser()
        {
            if (!client.Success)
            {
                return(false);
            }
            var match = client.Match;

            return(match.Type == ClientType.Browser.Name &&
                   BrowserParser.IsMobileOnlyBrowser(((BrowserMatchResult)match).ShortName));
        }
        private static bool IsMobileBrowser(string userAgent)
        {
            ParseResult <ClientMatchResult> client = DetectClient(userAgent);

            if (!client.Success)
            {
                return(false);
            }
            var match = client.Match;

            return(match.Type == ClientType.Browser.Name &&
                   BrowserParser.IsMobileOnlyBrowser(((BrowserMatchResult)match).ShortName));
        }
예제 #4
0
        public void TestAllBrowsersTested()
        {
            var browsers = new BrowserParser();

            BrowserParser.SetVersionTruncation(BrowserParser.VERSION_TRUNCATION_NONE);

            foreach (var fixture in _fixtureData)
            {
                browsers.SetUserAgent(fixture.user_agent);
                var result = browsers.Parse();

                result.Success.Should().BeTrue("Match should be with success");
                result.Match.Engine.Should().BeEquivalentTo(fixture.client.engine, "Engine should be equal " + fixture.user_agent);
                result.Match.EngineVersion.Should().BeEquivalentTo(fixture.client.engine_version.ToString(), "EngineVersion should be equal");
                result.Match.Name.Should().BeEquivalentTo(fixture.client.name, "Names should be equal");
                result.Match.ShortName.Should().BeEquivalentTo(fixture.client.short_name, "Short Names should be equal");
                result.Match.Type.Should().BeEquivalentTo(fixture.client.type, "Type should be equal");
                result.Match.Version.Should().BeEquivalentTo(fixture.client.version, "Version should be equal");
            }
        }
예제 #5
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));
        }
예제 #6
0
        public void TestGetAvailableClients()
        {
            var available = new BrowserParser().GetAvailableClients();

            BrowserParser.GetAvailableBrowsers().Count.Should().BeGreaterThan(available.Count);
        }
예제 #7
0
 public void TestGetAvailableBrowserFamilies()
 {
     BrowserParser.GetAvailableBrowserFamilies().Count.Should().BeGreaterThan(5);
 }
        /// <summary>
        /// Get the current http browser info
        /// </summary>
        public static BrowserInfo GetHttpCurrent()
        {
            BrowserParser browser = new BrowserParser();

            return(new BrowserInfo(browser.OSName, browser.OSVersion, browser.HardwareArchitecture, browser.Name, browser.Version));
        }