internal async Task ExtractAsync(ZipFileSettings settings)
        {
            await Task.Run(() =>
            {
                var watch = Stopwatch.StartNew();
                var agent = new ImageAgent();

                Parallel.ForEach <ImageSource>(settings.ImageSources,
                                               s =>
                {
                    s.ExtractedRootDirectory = Path.Combine(settings.WorkRootFolderPath, s.FileNameWithoutExtension);
                    Directory.CreateDirectory(s.ExtractedRootDirectory);

                    this.extractImageSourceAsync(s, agent);
                });

                watch.Stop();
                this.relayStation.AddLog($"展開完了!");
                this.relayStation.AddLog($"総展開時間:{watch.ElapsedMilliseconds / 1000}[sec]");
            });
        }
        //private async Task extractImageSourceAsync(ImageSource source, ImageAgent agent)
        private void extractImageSourceAsync(ImageSource source, ImageAgent agent)
        {
            //await Task.Run(async () =>
            //{
            using (var archive = ArchiveFactory.Open(source.Path.Value))
            {
                var entries = archive.Entries.Where(e => SourceItem.IsTargetFile(e));

                foreach (var e in entries)
                {
                    var targetFolder = source.GetExtractedFolder(e.Key);

                    e.WriteToDirectory(targetFolder.ItemPath);

                    var extractedPath = this.getExtractedFilePath(e, targetFolder);
                    targetFolder.Children.Add(new SourceItem(ImageFile.GetImageSpecification(extractedPath)));
                    //targetFolder.Children.Add(new SourceItem(agent.GetImageSpecification(extractedPath)));
                    //targetFolder.Children.Add(new SourceItem(await agent.GetImageSpecificationAsync(extractedPath)));
                }
            }
            //});
        }
Example #3
0
 //+
 //- @ProcessRequest -//
 public override void Process()
 {
     if (Themelia.Web.Http.GetUrlPart(Themelia.Position.Penultima) == "imagestore")
     {
         Byte[] buffer      = HttpData.GetInputHttpByteArray();
         String contentType = HttpData.GetHeaderItem(Info.ImageContentType);
         if (buffer != null && buffer.Length > 0 && !String.IsNullOrEmpty(contentType))
         {
             String    blogGuid  = Themelia.Web.Http.GetUrlPart(Themelia.Position.Ultima);
             BlogImage blogImage = new BlogImage
             {
                 ContentType = contentType,
                 Data        = buffer
             };
             //+
             try
             {
                 Response.Write(ImageAgent.SaveImage(blogImage, blogGuid));
             }
             catch
             {
             }
         }
         else
         {
             String blogImageGuid = Themelia.Web.Http.GetUrlPart(Themelia.Position.Ultima);
             if (!String.IsNullOrEmpty(blogImageGuid))
             {
                 BlogImage blogImage = ImageAgent.GetImage(blogImageGuid);
                 if (blogImage.Data != null && blogImage.Data.Length > 0)
                 {
                     ContentType = blogImage.ContentType;
                     Response.BinaryWrite(blogImage.Data);
                 }
             }
         }
     }
 }