public void FindDestinationDir() { var mapping = new DirectoryMapping("test", "C:\\Foo", "E:\\FooBackup"); var result = mapping.FindDestinationDirectoryFromSource("C:\\Foo\\a\\b"); Assert.AreEqual("E:\\FooBackup\\a\\b", result); }
public bool HasDefaultDirectoryId([NotNull] DirectoryMapping directoryMapping) { Contract.Requires(directoryMapping != null); var directory = directoryMapping.Directory; var id = GetDirectoryId(directory); var defaultId = GetDefaultId(directory); return(id == defaultId); }
public virtual void RemoveFromDirectoryListing(string fullPath) { if (DirectoryMapping == null) { return; } DirectoryMapping.Where(x => x.Value == fullPath) .ToList() .ForEach(pair => DirectoryMapping.TryRemove(pair.Key, out string key)); }
public void CaseInsensitiveEquals() { var lower = new DirectoryMapping("a", "b"); var upper = new DirectoryMapping("A", "B"); Ensure(lower == upper); Ensure(lower.Equals(upper)); Ensure(Equals(lower, upper)); Assert.AreEqual(lower, upper); Ensure(ReferenceEquals(lower, upper), False); Ensure(lower != upper, False); }
public async override Task SendFileAsync(IHttpContext context, string filename) { PopulateDirectoryListing(); if (DirectoryMapping.ContainsKey(context.Request.Endpoint)) { var filepath = DirectoryMapping[context.Request.Endpoint]; context.Response.StatusCode = HttpStatusCode.Ok; var lastModified = File.GetLastWriteTimeUtc(filepath).ToString("R"); context.Response.AddHeader("Last-Modified", lastModified); if (context.Request.Headers.AllKeys.Contains("If-Modified-Since")) { if (context.Request.Headers["If-Modified-Since"].Equals(lastModified)) { await context.Response.SendResponseAsync(HttpStatusCode.NotModified).ConfigureAwait(false); return; } } if (!string.IsNullOrWhiteSpace(filename)) { context.Response.AddHeader("Content-Disposition", $"attachment; filename=\"{filename}\""); } context.Response.ContentType = ContentType.FindKey(Path.GetExtension(filepath).TrimStart('.').ToLower()); using (var stream = new FileStream(filepath, FileMode.Open)) { await context.Response.SendResponseAsync(stream); } } // File not found, but should have been based on the path info else if (!string.IsNullOrEmpty(Prefix) && context.Request.Endpoint.StartsWith(Prefix, StringComparison.CurrentCultureIgnoreCase)) { context.Response.StatusCode = HttpStatusCode.NotFound; } }