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 }; }
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; } }