Ejemplo n.º 1
0
        private void btnAttach_Click_1(object sender, RoutedEventArgs e)
        {
            var entries = SelectedEntries();
            var tempDir = TempDir();

            var downloaded = 0;

            filesToAttach = new List <StorageSelectionEntry>();
            downloadProgress.Visibility = Visibility.Visible;
            foreach (var entry in entries)
            {
                var pathName = System.IO.Path.Combine(tempDir, Guid.NewGuid().ToString() + entry.Title);
                _storage.Download(entry.IdString,
                                  pathName,
                                  Dispatcher,
                                  () =>
                {
                    if (File.Exists(pathName))                       //some files are empty
                    {
                        filesToAttach.Add(new StorageSelectionEntry
                        {
                            PathName = pathName,
                            Title    = entry.Title
                        });
                    }

                    attachmentsProcessed.Text = downloaded + " of " + entries.Count();
                    if (++downloaded == entries.Count())
                    {
                        Close();
                    }
                });
            }
        }
Ejemplo n.º 2
0
        public async Task <FileModel> Download(int id)
        {
            using (var storageItemRepository = repositoryFactory.CreateStorageItemRepository())
            {
                var user = userService.GetAuthenticatedUser();

                var item = storageItemRepository.GetById(id);

                var fileStream = await storageClient.Download(user.Id, item.Path);

                return(new FileModel
                {
                    Name = item.Name,
                    Stream = fileStream
                });
            }
        }
Ejemplo n.º 3
0
    public async Task <PageRankingProcessorResponse> PageRankingProcessorHandler(PageRankingProcessorRequest request)
    {
        string targetPath = PathGenerator.Generate(request.SearchEngine, request.Keywords, request.TargetDate);

        StorageClientListFolderResponse files = await _storageClient.ListFolder(new StorageClientListFolderRequest { FolderPath = targetPath });

        List <Task <StorageClientDownloadResponse> > downloadTasks = files.FilePaths
                                                                     .Select(f => _storageClient.Download(new StorageClientDownloadRequest {
            DownloadPath = f
        }))
                                                                     .ToList();

        List <PageRankingProcessorWithSequenceResponse> processedResponses = new List <PageRankingProcessorWithSequenceResponse>();

        while (downloadTasks.Any())
        {
            Task <StorageClientDownloadResponse> finishedTask = await Task.WhenAny(downloadTasks);

            downloadTasks.Remove(finishedTask);

            StorageClientDownloadResponse downloadedData = await finishedTask;
            processedResponses.Add(await GenerateResponse(request.SearchEngine, downloadedData.FilePath, downloadedData.FileData));
        }

        //combine
        List <PageRank> pageRanks = new List <PageRank>();
        int             rank      = 1;

        foreach (var r in processedResponses.OrderBy(c => c.Sequence))
        {
            foreach (var p in r.Pages.OrderBy(c => c.Rank))
            {
                pageRanks.Add(new PageRank {
                    Rank = rank++, Url = p.Url
                });
            }
        }

        return(new PageRankingProcessorResponse
        {
            Date = request.TargetDate,
            Pages = pageRanks
        });
    }