Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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);
            }
        }
Example #8
0
        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());
            }
        }
Example #9
0
        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);
            }
        }
Example #10
0
        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);
            }
        }