예제 #1
0
        /// <summary>
        /// Returns the result of the parsed yml file defined in $fixtureFile
        /// </summary>
        /// <returns></returns>
        protected T GetRegexes()
        {
            if (regexList.Any())
            {
                return(regexList);
            }
            var cacheKey = "DeviceDetector-" + DeviceDetector.VERSION + "regexes-" + GetName();

            //@todo:option none
            cacheKey = GetRegexEngine().Replace(cacheKey, "/([^a-z0-9_-]+)/i", string.Empty);
            var regexListCache = GetCache().Fetch(cacheKey);

            if (regexListCache != null)
            {
                regexList = (T)regexListCache;
            }
            if (regexList.Any())
            {
                return(regexList);
            }

            var regexesDir = GetRegexesDirectory();

            if (regexesDir == string.Empty)
            {
                var assembly = typeof(DeviceDetector).GetTypeInfo().Assembly;
                var filePath = FixtureFile.Replace("/", ".");
                var fullPath = $"{nameof(DeviceDetectorNET)}.{filePath}";

                using (Stream resource = assembly.GetManifestResourceStream(fullPath))
                {
                    regexList = GetYamlParser().ParseStream(resource);
                }
            }
            else
            {
                regexList = GetYamlParser().ParseFile(
                    regexesDir + FixtureFile
                    );
            }

            GetCache().Save(cacheKey, regexList);
            return(regexList);
        }
예제 #2
0
        /// <summary>
        /// Returns the result of the parsed yml file defined in $fixtureFile
        /// </summary>
        /// <returns></returns>
        protected T GetRegexes()
        {
            if (regexList.Any())
            {
                return(regexList);
            }
            var cacheKey = "DeviceDetector-" + DeviceDetector.VERSION + "regexes-" + GetName();

            cacheKey = Regex.Replace(cacheKey, "/([^a-z0-9_-]+)/i", "");
            var regexListCache = GetCache().Fetch(cacheKey);

            if (regexListCache != null)
            {
                regexList = (T)regexListCache;
            }
            if (regexList.Any())
            {
                return(regexList);
            }

            var assembly = Assembly.GetAssembly(GetType());

#if NETCOREAPP
            var resourcePrefix = assembly.GetName().Name;
#else
            var resourcePrefix = typeof(DeviceDetector).Namespace;
#endif

            var resourceName = resourcePrefix + "." + FixtureFile.Replace("/", ".");

            using (var stream = assembly.GetManifestResourceStream(resourceName))
                regexList = GetYamlParser().ParseStream(stream);

            GetCache().Save(cacheKey, regexList);
            return(regexList);
        }