コード例 #1
0
        public async Task <Publication> Run(
            [ActivityTrigger] PublicationConfiguration publicationConfiguration,
            ILogger logger)
        {
            logger.LogInformation($"Started {nameof(GetLatestPublicationFromWebActivity)} for { publicationConfiguration.PublicationSourceOwner } { publicationConfiguration.PublicationSourceName}.");

            Publication publication = new NullPublication(publicationConfiguration.PublicationSourceName);

            using (var xmlReader = XmlReader.Create(publicationConfiguration.PublicationSourceUrl, new XmlReaderSettings()
            {
                Async = true
            }))
            {
                var parser = new RssParser();
                var reader = new RssFeedReader(xmlReader, parser);
                while (await reader.Read())
                {
                    if (reader.ElementType == SyndicationElementType.Item)
                    {
                        ISyndicationItem item = await reader.ReadItem();

                        publication = MapToPublication(publicationConfiguration, item);
                        break;
                    }
                }
            }

            logger.LogInformation($"Found publication on web for {publicationConfiguration.PublicationSourceName}: " +
                                  $"ID: {publication.Id}," +
                                  $"Date: {publication.PublicationDate:F}.");

            return(publication);
        }
コード例 #2
0
 private static Publication MapToPublication(PublicationConfiguration configuration, ISyndicationItem item)
 {
     return(new Publication(
                publicationSourceName: configuration.PublicationSourceName,
                id: item.Id,
                publicationDate: item.Published,
                title: item.Title,
                description: item.Description,
                url: item.Links.FirstOrDefault()?.Uri.AbsoluteUri,
                hashTags: configuration.HashTags));
 }
        public async Task <Publication> Run(
            [ActivityTrigger] PublicationConfiguration publicationConfiguration,
            [Table(Configuration.Publications.TableName)] CloudTable table,
            ILogger logger)
        {
            logger.LogInformation($"Started {nameof(GetLatestPublicationFromHistoryActivity)} for { publicationConfiguration.PublicationSourceOwner } { publicationConfiguration.PublicationSourceName }.");

            Publication latestKnownPublication = null;
            var         query = QueryBuilder <Publication> .CreateQueryForPartitionKey(publicationConfiguration.PublicationSourceName);

            var queryResult = await table.ExecuteQuerySegmentedAsync(query, null);

            latestKnownPublication = queryResult.Results.AsReadOnly().OrderByDescending(publication => publication.PublicationDate).FirstOrDefault();

            if (latestKnownPublication != null)
            {
                logger.LogInformation($"Found publication in history for configuration: {publicationConfiguration.PublicationSourceName}, " +
                                      $"ID: {latestKnownPublication.Id}," +
                                      $"PublicationDate: {latestKnownPublication.PublicationDate:F}.");
            }

            return(latestKnownPublication ?? new NullPublication(publicationConfiguration.PublicationSourceName));
        }