setDefaultSort,
videoCommentsFeedsValidator,
videoFeedsValidator,
- videosSortValidator
+ videosSortValidator,
+ feedsFormatValidator,
+ setFeedFormatContentType
} from '../middlewares'
import { VideoModel } from '../models/video/video'
import * as Feed from 'pfeed'
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)
)
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)
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
})
})
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()
}