public async Task <IActionResult> Get( string feedGroupName, string feedName ) { _log.Trace($"Got request for feed {feedGroupName}:{feedName}..."); try { _log.Trace($"Getting feed {feedGroupName}:{feedName}..."); var userName = (await _feedService.GetAllFeeds()).Single(f => f.Group == feedGroupName && f.Name == feedName).UserName; var feed = await _feedService.GetFeed( userName, feedGroupName, feedName ); _log.Trace($"Got feed."); var feedTitle = $"{feed.Group}: {feed.Name}"; var feedDescription = feed.Name; var lastUpdatedTime = !feed.Entries.Any() ? new DateTimeOffset?() : feed.Entries.Max(e => e.Timestamp); var atom = _feedService .Atom( feed, feedTitle, feedDescription, lastUpdatedTime ?? DateTimeOffset.MinValue, Request.GetDisplayUrl() ); _log.Trace($"Returning content for feed {feedGroupName}:{feedName}..."); return(Content( atom.XmlString(), "application/atom+xml" )); } catch (Exception exception) { _log.Error($"Error when getting feed {feedGroupName}:{feedName}: {exception}"); throw; // ??? } }