Example #1
0
        private SyndicationItem MapEntryToSyndicationItem(Identity topicId, FeedEntry e)
        {
            var messageLink = ResourceLocation.OfMessageByTopic(topicId, e.MessageId);
            var message = messageByMessageKey.Get(new MessageKey {TopicId = topicId, MessageId = e.MessageId});

            var contentType = message.Headers.FirstOrDefault(h => h.Key == "Content-Type");
            var content = new UrlSyndicationContent(messageLink, contentType.Value.Aggregate((a,b)=>a +","+b));

            return new SyndicationItem(string.Format("Message {0}", e.MessageId),
                                       content,
                                       null,
                                       e.MessageId.ToString(), e.TimeStamp)
                       {
                           Links = { new SyndicationLink(messageLink) },
                           LastUpdatedTime = e.TimeStamp
                       };
        }
Example #2
0
        private SyndicationFeed GetFeedForMessage(Message message)
        {
            var messageId = message.Id.Value;
            var topicId = message.TopicId;

            var feedEntry = new FeedEntry() { MessageId = messageId, TimeStamp = DateTime.UtcNow };
            var feed = new Feed()
            {
                Entries = new List<FeedEntry>(new[] { feedEntry }),
                Id = Identity.Random(),
                TopicId = topicId,
                Updated = DateTime.UtcNow
            };

            var topic = new Topic()
            {
                Id = topicId,
                Name = "Topic Name",
                Description = "Topic Description",
                GroupId = Identity.Random()
            };

            var key = new MessageKey { MessageId = messageId, TopicId = topicId };

            messageByMessageKey
                .Setup(r => r.Get(It.Is<MessageKey>(k => k.TopicId == key.TopicId && k.MessageId == key.MessageId)))
                .Returns(message);

            getWorkingFeedForTopic
                .Setup(r => r.Execute(topicId))
                .Returns(feed);

            entityById
                .Setup(r => r.Get<Topic>(topicId))
                .Returns(topic);

            var client = new HttpClient(baseUri);

            var response = client.Get(topicId.ToString());
            var formatter = new Atom10FeedFormatter();

            using (var rdr = XmlReader.Create(response.Content.ContentReadStream))
            {
                formatter.ReadFrom(rdr);
                return formatter.Feed;
            }
        }