コード例 #1
0
ファイル: JournalTocsClient.cs プロジェクト: spapaseit/qoam
        public List<string> DownloadJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
        {
            _logger.Info("Downloading journals...");

            var result = new List<string>();

            using (var webClient = _webClientFactory.Create())
            {
                webClient.Encoding = _encoding;
                var fetch = true;

                do
                {
                    _logger.Info($"\t...downloading batch #{_resumptionToken + 1}...");

                    var batch = webClient.DownloadString($"{_settings.RequestUrl}&action={action.ToString().ToLowerInvariant()}&resumptionToken={_resumptionToken}");

                    if (!batch.Contains(EndOfBatchesNotice) || !batch.Contains(Notice))
                    {
                        result.Add(batch.Replace("&", "&amp;"));
                        _resumptionToken++;
                    }
                    else
                        fetch = false;

                } while (fetch);

                _logger.Info("Finised downloading journals.");

                return result;
            }
        }
コード例 #2
0
        public List <string> DownloadJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
        {
            _logger.Info("Downloading journals...");

            var result = new List <string>();

            using (var webClient = _webClientFactory.Create())
            {
                webClient.Encoding = _encoding;
                var fetch = true;

                do
                {
                    _logger.Info($"\t...downloading batch #{_resumptionToken + 1}...");

                    var batch = webClient.DownloadString($"{_settings.AllJournalsRequestUrl}&action={action.ToString().ToLowerInvariant()}&resumptionToken={_resumptionToken}");

                    if (!batch.Contains(EndOfBatchesNotice) || !batch.Contains(Notice))
                    {
                        result.Add(batch.Replace("&", "&amp;"));
                        _resumptionToken++;
                    }
                    else
                    {
                        fetch = false;
                    }
                } while (fetch);

                _logger.Info("Finised downloading journals.");

                return(result);
            }
        }
コード例 #3
0
        public void DownloadJournals_uses_the_given_Action_to_fetch_journals(JournalTocsFetchMode action)
        {
            var sut = CreateClient();

            _webClient.Setup(x => x.DownloadString(It.IsAny <string>())).Returns(GetJournalTocsNoMoreItemsNotice());

            sut.DownloadJournals(action);

            _webClient.Verify(x => x.DownloadString($"{_settings.AllJournalsRequestUrl}&action={action.ToString().ToLowerInvariant()}&resumptionToken=0"), Times.Once);
        }
コード例 #4
0
        public void DownloadJournals_uses_the_given_Action_to_fetch_journals(JournalTocsFetchMode action)
        {
            var sut = CreateClient();

            _webClient.Setup(x => x.DownloadString(It.IsAny<string>())).Returns(GetJournalTocsNoMoreItemsNotice());

            sut.DownloadJournals(action);

            _webClient.Verify(x => x.DownloadString($"{_settings.RequestUrl}&action={action.ToString().ToLowerInvariant()}&resumptionToken=0"), Times.Once);
        }
コード例 #5
0
        IList <Journal> GetJournalsFromSource(JournalsImportSource importSource, JournalTocsFetchMode action = JournalTocsFetchMode.Update)
        {
            switch (importSource)
            {
            case JournalsImportSource.DOAJ:
                return(doajImport.GetJournals());

            case JournalsImportSource.Ulrichs:
                return(ulrichsImport.GetJournals(UlrichsImport.UlrichsJournalType.All));

            case JournalsImportSource.JournalTOCs:
                return(_journalsTocImport.DownloadJournals(action));

            default:
                throw new ArgumentOutOfRangeException(nameof(importSource));
            }
        }
コード例 #6
0
 public List <string> DownloadJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
 {
     return(new List <string>());
 }
コード例 #7
0
ファイル: AdminController.cs プロジェクト: spapaseit/qoam
 IList<Journal> GetJournalsFromSource(JournalsImportSource importSource, JournalTocsFetchMode action = JournalTocsFetchMode.Update)
 {
     switch (importSource)
     {
         case JournalsImportSource.DOAJ:
             return doajImport.GetJournals();
         case JournalsImportSource.Ulrichs:
             return ulrichsImport.GetJournals(UlrichsImport.UlrichsJournalType.All);
             case JournalsImportSource.JournalTOCs:
             return _journalsTocImport.DownloadJournals(action);
         default:
             throw new ArgumentOutOfRangeException(nameof(importSource));
     }
 }
コード例 #8
0
ファイル: JournalTocsImport.cs プロジェクト: spapaseit/qoam
        IList<Journal> ParseJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
        {
            var xml = GetXml(action);

            var journalElements = new List<XElement>();

            foreach (var doc in xml)
                journalElements.AddRange(XDocument.Parse(doc).Descendants("journals").Descendants("journal").ToList());

            return journalElements.SelectMany(ParseJournal).Where(j => j.IsValid()).ToList();
        }
コード例 #9
0
ファイル: JournalTocsImport.cs プロジェクト: spapaseit/qoam
 IEnumerable<string> GetXml(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
 {
     return _client.DownloadJournals(action);
 }
コード例 #10
0
ファイル: JournalTocsImport.cs プロジェクト: spapaseit/qoam
 public IList<Journal> DownloadJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
 {
     return ExcludeBlockedIssns(ParseJournals(action));
 }
コード例 #11
0
ファイル: JournalTocsImport.cs プロジェクト: spapaseit/qoam
        IList <Journal> ParseJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
        {
            var xml = _client.DownloadJournals(action);

            return(_parser.Parse(xml));
        }
コード例 #12
0
ファイル: JournalTocsImport.cs プロジェクト: spapaseit/qoam
 public IList <Journal> DownloadJournals(JournalTocsFetchMode action = JournalTocsFetchMode.Update)
 {
     return(ExcludeBlockedIssns(ParseJournals(action)));
 }