Ejemplo n.º 1
0
    public void LoadFromFile(string path)
    {
        var tmpDomLists = new DomainLists(path);

        domLists  = tmpDomLists;
        this.path = path;
    }
        /// <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);
        }
Ejemplo n.º 3
0
 public void ReloadFile()
 {
     // While `path` /could/ change after this check, it will never become null again.
     // And because `path` is only changed after a successful load, it will be a proper path.
     if (path != null)
     {
         var tmpDomLists = new DomainLists(path);
         domLists = tmpDomLists;
     }
 }
        /// <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;
        }