public async Task <string> UploadAsync(IBlobContainer payloadContainer) { using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { string basePath = DirectoryInfo.FullName; basePath = basePath.TrimEnd('/', '\\'); foreach (FileInfo file in DirectoryInfo.EnumerateFiles("*", SearchOption.AllDirectories)) { string relativePath = file.FullName.Substring(basePath.Length + 1); // +1 prevents it from including the leading backslash string zipEntryName = relativePath.Replace('\\', '/'); // Normalize slashes if (!string.IsNullOrEmpty(ArchiveEntryPrefix)) { zipEntryName = ArchiveEntryPrefix + "/" + zipEntryName; } zip.CreateEntryFromFile(file.FullName, zipEntryName); } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Guid.NewGuid()}.zip"); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer, Action <string> log) { using (var stream = File.OpenRead(Archive.FullName)) { Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Archive.Name}"); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer) { using (var stream = new FileStream(Archive.FullName, FileMode.Open)) { Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Archive.Name}"); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer) { using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { using (Stream entryStream = zip.CreateEntry(Name).Open()) { await entryStream.WriteAsync(Content, 0, Content.Length); } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Name}.zip"); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer, Action <string> log, CancellationToken cancellationToken) { using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { using (Stream entryStream = zip.CreateEntry(Name).Open()) { await entryStream.WriteAsync(Content, 0, Content.Length, cancellationToken); } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Guid.NewGuid()}.zip", cancellationToken); return(zipUri.AbsoluteUri); } }
private async Task <string> DoUploadAsync(IBlobContainer payloadContainer, Action <string> log, CancellationToken cancellationToken) { var alreadyUploadedFile = new FileInfo($"{Archive.FullName}.payload"); if (alreadyUploadedFile.Exists && IsUpToDate(alreadyUploadedFile)) { log?.Invoke($"Using previously uploaded payload for {Archive.FullName}"); return(File.ReadAllText(alreadyUploadedFile.FullName)); } using (var stream = File.OpenRead(Archive.FullName)) { Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Archive.Name}", log, cancellationToken); File.WriteAllText(alreadyUploadedFile.FullName, zipUri.AbsoluteUri); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer) { using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { string basePath = DirectoryInfo.FullName; foreach (FileInfo file in DirectoryInfo.EnumerateFiles("*", SearchOption.AllDirectories)) { string relativePath = file.FullName.Substring(basePath.Length + 1); // +1 prevents it from including the leading backslash zip.CreateEntryFromFile(file.FullName, relativePath); } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Guid.NewGuid()}.zip"); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer) { using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { string basePath = DirectoryInfo.FullName; foreach (FileInfo file in DirectoryInfo.EnumerateFiles("*", SearchOption.AllDirectories)) { string relativePath = file.FullName.Substring(basePath.Length); zip.CreateEntryFromFile(file.FullName, relativePath); } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{DirectoryInfo.Name}.zip"); return(zipUri.ToString()); } }
private async Task <string> DoUploadAsync(IBlobContainer payloadContainer, Action <string> log, CancellationToken cancellationToken) { await Task.Yield(); string basePath = NormalizedDirectoryPath; var alreadyUploadedFile = new FileInfo(basePath + ".payload"); if (alreadyUploadedFile.Exists && IsUpToDate(alreadyUploadedFile)) { log?.Invoke($"Using previously uploaded payload for {basePath}"); return(File.ReadAllText(alreadyUploadedFile.FullName)); } log?.Invoke($"Uploading payload for {basePath}"); using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { foreach (FileInfo file in DirectoryInfo.EnumerateFiles("*", SearchOption.AllDirectories)) { string relativePath = file.FullName.Substring(basePath.Length + 1); // +1 prevents it from including the leading backslash string zipEntryName = relativePath.Replace('\\', '/'); // Normalize slashes if (!string.IsNullOrEmpty(ArchiveEntryPrefix)) { zipEntryName = ArchiveEntryPrefix + "/" + zipEntryName; } zip.CreateEntryFromFile(file.FullName, zipEntryName); } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Guid.NewGuid()}.zip", cancellationToken); File.WriteAllText(alreadyUploadedFile.FullName, zipUri.AbsoluteUri); return(zipUri.AbsoluteUri); } }
public async Task <string> UploadAsync(IBlobContainer payloadContainer, Action <string> log, CancellationToken cancellationToken) { using (var stream = new MemoryStream()) { using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true)) { foreach (string file in Files) { string name = Path.GetFileName(file); using (Stream entryStream = zip.CreateEntry(name).Open()) using (FileStream inputStream = File.OpenRead(file)) { await inputStream.CopyToAsync(entryStream, 81920, cancellationToken); } } } stream.Position = 0; Uri zipUri = await payloadContainer.UploadFileAsync(stream, $"{Guid.NewGuid()}.zip", cancellationToken); return(zipUri.AbsoluteUri); } }