Ejemplo n.º 1
0
        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; // ???
            }
        }