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(); } }
public string Resolve(string file) { string resolved; if (TempFileResolutionCache.TryGetValue(file, out resolved)) { return(resolved); } return(ResolveWebResource(file)); }
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)); }
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)); }
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)); }
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); } }
public static void Shutdown() { TempFileResolutionCache.Clear(); }