/// <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); }
/// <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); }