X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Ffeeds.ts;h=72628dffb94bc3d26a919a2971e44e3bc3d46965;hb=000eb0e40d74e914f6691305511c44e89cd8bf07;hp=ba5a476e7acbc7831137d109902cd161acd010ad;hpb=65d2ae2a61df283e1ca7b1e1645cb5fe8ac47504;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/feeds.ts b/server/controllers/feeds.ts index ba5a476e7..72628dffb 100644 --- a/server/controllers/feeds.ts +++ b/server/controllers/feeds.ts @@ -6,7 +6,9 @@ import { setDefaultSort, videoCommentsFeedsValidator, videoFeedsValidator, - videosSortValidator + videosSortValidator, + feedsFormatValidator, + setFeedFormatContentType } from '../middlewares' import { VideoModel } from '../models/video/video' import * as Feed from 'pfeed' @@ -18,7 +20,13 @@ import { CONFIG } from '../initializers/config' const feedsRouter = express.Router() feedsRouter.get('/feeds/video-comments.:format', - asyncMiddleware(cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS)), + feedsFormatValidator, + setFeedFormatContentType, + asyncMiddleware(cacheRoute({ + headerBlacklist: [ + 'Content-Type' + ] + })(ROUTE_CACHE_LIFETIME.FEEDS)), asyncMiddleware(videoCommentsFeedsValidator), asyncMiddleware(generateVideoCommentsFeed) ) @@ -26,7 +34,13 @@ feedsRouter.get('/feeds/video-comments.:format', feedsRouter.get('/feeds/videos.:format', videosSortValidator, setDefaultSort, - asyncMiddleware(cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS)), + feedsFormatValidator, + setFeedFormatContentType, + asyncMiddleware(cacheRoute({ + headerBlacklist: [ + 'Content-Type' + ] + })(ROUTE_CACHE_LIFETIME.FEEDS)), commonVideosFiltersValidator, asyncMiddleware(videoFeedsValidator), asyncMiddleware(generateVideoFeed) @@ -57,19 +71,22 @@ async function generateVideoCommentsFeed (req: express.Request, res: express.Res const link = WEBSERVER.URL + comment.getCommentStaticPath() let title = comment.Video.name - if (comment.Account) title += ` - ${comment.Account.getDisplayName()}` + const author: { name: string, link: string }[] = [] + + if (comment.Account) { + title += ` - ${comment.Account.getDisplayName()}` + author.push({ + name: comment.Account.getDisplayName(), + link: comment.Account.Actor.url + }) + } feed.addItem({ title, id: comment.url, link, content: comment.text, - author: [ - { - name: comment.Account.getDisplayName(), - link: comment.Account.Actor.url - } - ], + author, date: comment.createdAt }) }) @@ -221,26 +238,21 @@ function sendFeed (feed, req: express.Request, res: express.Response) { const format = req.params.format if (format === 'atom' || format === 'atom1') { - res.set('Content-Type', 'application/atom+xml') return res.send(feed.atom1()).end() } if (format === 'json' || format === 'json1') { - res.set('Content-Type', 'application/json') return res.send(feed.json1()).end() } if (format === 'rss' || format === 'rss2') { - res.set('Content-Type', 'application/rss+xml') return res.send(feed.rss2()).end() } // We're in the ambiguous '.xml' case and we look at the format query parameter if (req.query.format === 'atom' || req.query.format === 'atom1') { - res.set('Content-Type', 'application/atom+xml') return res.send(feed.atom1()).end() } - res.set('Content-Type', 'application/rss+xml') return res.send(feed.rss2()).end() }