/// <summary> /// The function gets files list for the specified snapshot date /// </summary> /// <returns></returns> public async Task GetFilesListAsync(string homePageDate) { UpdateHomePageUrl(homePageDate); if (!Directory.Exists(DomainDirectory)) { Directory.CreateDirectory(DomainDirectory); } var fullPathName = DomainDirectory + StartPage; var status = await Task.Run(() => Helpers.GetFile(DomainHomePage, fullPathName), _cancellationToken); if (!status) { return; } var htmlPage = string.Empty; await Task.Run(() => { try { // if operation was canceled throw an exception _cancellationToken.ThrowIfCancellationRequested(); Correction.RemoveWbmCodeFromHtml(fullPathName); htmlPage = File.ReadAllText(fullPathName); } catch (OperationCanceledException) { return; } }, _cancellationToken); if (_cancellationToken.IsCancellationRequested) { return; } // get files var htmlFilesList = Task.Run(() => GetFilesList("html", "html", htmlPage), _cancellationToken); var jsFilesList = Task.Run(() => GetFilesList("js", "js", htmlPage), _cancellationToken); var cssFilesList = Task.Run(() => GetFilesList("css", "css", htmlPage), _cancellationToken); var imgsFilesList = Task.Run(() => GetFilesList("imgs", "images"), _cancellationToken); await Task.WhenAll(htmlFilesList, jsFilesList, cssFilesList, imgsFilesList); if (_cancellationToken.IsCancellationRequested) { return; } DomainLists.ClearFilesLists(); DomainLists.HtmlFilesList["available"].AddRange(htmlFilesList.Result); DomainLists.JsFilesList["available"].AddRange(jsFilesList.Result); DomainLists.CssFilesList["available"].AddRange(cssFilesList.Result); DomainLists.ImgsList["available"].AddRange(imgsFilesList.Result); }
/// <summary> /// /// </summary> /// <returns></returns> public async Task CheckFilesListAsync() { // check files var htmlFilesDict = Task.Run(() => CheckListAvailability(DomainLists.HtmlFilesList["available"], "html"), _cancellationToken); var jsFilesDict = Task.Run(() => CheckListAvailability(DomainLists.JsFilesList["available"], "js"), _cancellationToken); var cssFilesDict = Task.Run(() => CheckListAvailability(DomainLists.CssFilesList["available"], "css"), _cancellationToken); var imgsDict = Task.Run(() => CheckListAvailability(DomainLists.ImgsList["available"], "images"), _cancellationToken); await Task.WhenAll(htmlFilesDict, jsFilesDict, cssFilesDict, imgsDict); if (_cancellationToken.IsCancellationRequested) { return; } DomainLists.ClearFilesLists(); DomainLists.HtmlFilesList = htmlFilesDict.Result; DomainLists.JsFilesList = jsFilesDict.Result; DomainLists.CssFilesList = cssFilesDict.Result; DomainLists.ImgsList = imgsDict.Result; }