Esempio n. 1
0
        private string ResolveWebResource(string path)
        {
            var webRequestObject = (HttpWebRequest)WebRequest.Create(path);
            var webResponse      = webRequestObject.GetResponse();

            try
            {
                string contents;
                using (var sr = new StreamReader(webResponse.GetResponseStream()))
                {
                    contents = sr.ReadToEnd();
                }
                string fileName = tempPathProvider.ForFile();

                using (var sw = new StreamWriter(fileName))
                {
                    sw.Write(contents);
                }
                TempFileResolutionCache.Add(path, fileName);
                return(fileName);
            }
            finally
            {
                webResponse.Close();
            }
        }
Esempio n. 2
0
        public string Resolve(string file)
        {
            string resolved;

            if (TempFileResolutionCache.TryGetValue(file, out resolved))
            {
                return(resolved);
            }
            return(ResolveWebResource(file));
        }
Esempio n. 3
0
        public void CanResolveResource()
        {
            var resourcePath = "http://example.com";

            var httpResolver = new HttpResolver();

            var path = httpResolver.Resolve(resourcePath);

            Assert.AreEqual(_htmlContent, File.ReadAllText(path));

            TempFileResolutionCache.Clear();

            Assert.False(File.Exists(path));
        }
        public void CanResolveResource_Root()
        {
            var resourcePath = "SquishIt.Tests://RootEmbedded.css";

            var embeddedResourceResolver = new RootEmbeddedResourceResolver();

            var path = embeddedResourceResolver.Resolve(resourcePath);

            Assert.AreEqual(cssContent, File.ReadAllText(path));

            TempFileResolutionCache.Clear();

            Assert.False(File.Exists(path));
        }
Esempio n. 5
0
        public string Resolve(string file)
        {
            var split        = file.Split(new[] { "://" }, StringSplitOptions.None);
            var assemblyName = split.ElementAt(0);
            var assembly     = AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(x => x.GetName().Name == assemblyName);
            var resourceName = CalculateResourceName(assemblyName, split.ElementAt(1));

            string resolved;

            if (TempFileResolutionCache.TryGetValue(resourceName, out resolved))
            {
                return(resolved);
            }
            return(ResolveFile(file, assembly, resourceName));
        }
        public void CanResolveResource_Standard()
        {
            var resourcePath = "SquishIt.Tests://EmbeddedResource.Embedded.css";

            var embeddedResourceResolver = new StandardEmbeddedResourceResolver();

            var path = embeddedResourceResolver.Resolve(resourcePath);

            Assert.True(path.EndsWith("EmbeddedResource.Embedded.css"));

            Assert.AreEqual(cssContent, File.ReadAllText(path));

            TempFileResolutionCache.Clear();

            Assert.False(File.Exists(path));
        }
Esempio n. 7
0
        public void CanResolveResource_Reuses_Previous_Temp_File()
        {
            var resourcePath = "http://example.com";

            var embeddedResourceResolver = new HttpResolver();

            var path  = embeddedResourceResolver.Resolve(resourcePath);
            var path2 = embeddedResourceResolver.Resolve(resourcePath);

            Assert.AreEqual(_htmlContent, File.ReadAllText(path));
            Assert.AreEqual(_htmlContent, File.ReadAllText(path2));

            Assert.AreEqual(path, path2);

            TempFileResolutionCache.Clear();

            Assert.False(File.Exists(path));
        }
        public void CanResolveResource_Standard_Reuses_Previous_Temp_File()
        {
            var resourcePath = "SquishIt.Tests://EmbeddedResource.Embedded.css";

            var embeddedResourceResolver = new StandardEmbeddedResourceResolver();

            var path  = embeddedResourceResolver.Resolve(resourcePath);
            var path2 = embeddedResourceResolver.Resolve(resourcePath);

            Assert.AreEqual(cssContent, File.ReadAllText(path));
            Assert.AreEqual(cssContent, File.ReadAllText(path2));

            Assert.AreEqual(path, path2);

            TempFileResolutionCache.Clear();

            Assert.False(File.Exists(path));
        }
Esempio n. 9
0
        private string ResolveFile(string file, Assembly assembly, string resourceName, string filename)
        {
            using (var stream = assembly.GetManifestResourceStream(resourceName))
            {
                if (stream == null)
                {
                    throw new InvalidOperationException(String.Format("Embedded resource not found: {0}", file));
                }

                string contents;
                using (var sr = new StreamReader(stream))
                {
                    contents = sr.ReadToEnd();
                }
                string fileName = tempPathProvider.ForFile() + "-" + filename;

                using (var sw = new StreamWriter(fileName))
                {
                    sw.Write(contents);
                }
                TempFileResolutionCache.Add(resourceName, fileName);
                return(fileName);
            }
        }
Esempio n. 10
0
 public static void Shutdown()
 {
     TempFileResolutionCache.Clear();
 }