X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Ffeeds.ts;h=29502a15458d8fd91aba60b893a5dd5e32f0bab4;hb=a5a79d15427372b581e34ac3999c73fc316699d5;hp=435b12193a9bee8fc0cf823aa0ec8f7be73dbdd3;hpb=7c3a6636fdd9b905345996d825c249a18add8a2c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/feeds.ts b/server/controllers/feeds.ts index 435b12193..29502a154 100644 --- a/server/controllers/feeds.ts +++ b/server/controllers/feeds.ts @@ -1,7 +1,8 @@ -import * as express from 'express' -import * as Feed from 'pfeed' +import express from 'express' +import Feed from 'pfeed' +import { getServerActor } from '@server/models/application/application' import { getCategoryLabel } from '@server/models/video/formatter/video-format-utils' -import { VideoFilter } from '../../shared/models/videos/video-query.type' +import { VideoInclude } from '@shared/models' import { buildNSFWFilter } from '../helpers/express-utils' import { CONFIG } from '../initializers/config' import { FEEDS, PREVIEWS_SIZE, ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants' @@ -16,20 +17,20 @@ import { videosSortValidator, videoSubscriptionFeedsValidator } from '../middlewares' -import { cacheRoute } from '../middlewares/cache' +import { cacheRouteFactory } from '../middlewares/cache/cache' import { VideoModel } from '../models/video/video' import { VideoCommentModel } from '../models/video/video-comment' const feedsRouter = express.Router() +const cacheRoute = cacheRouteFactory({ + headerBlacklist: [ 'Content-Type' ] +}) + feedsRouter.get('/feeds/video-comments.:format', feedsFormatValidator, setFeedFormatContentType, - asyncMiddleware(cacheRoute({ - headerBlacklist: [ - 'Content-Type' - ] - })(ROUTE_CACHE_LIFETIME.FEEDS)), + cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS), asyncMiddleware(videoFeedsValidator), asyncMiddleware(videoCommentsFeedsValidator), asyncMiddleware(generateVideoCommentsFeed) @@ -40,11 +41,7 @@ feedsRouter.get('/feeds/videos.:format', setDefaultVideosSort, feedsFormatValidator, setFeedFormatContentType, - asyncMiddleware(cacheRoute({ - headerBlacklist: [ - 'Content-Type' - ] - })(ROUTE_CACHE_LIFETIME.FEEDS)), + cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS), commonVideosFiltersValidator, asyncMiddleware(videoFeedsValidator), asyncMiddleware(generateVideoFeed) @@ -55,11 +52,7 @@ feedsRouter.get('/feeds/subscriptions.:format', setDefaultVideosSort, feedsFormatValidator, setFeedFormatContentType, - asyncMiddleware(cacheRoute({ - headerBlacklist: [ - 'Content-Type' - ] - })(ROUTE_CACHE_LIFETIME.FEEDS)), + cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS), commonVideosFiltersValidator, asyncMiddleware(videoSubscriptionFeedsValidator), asyncMiddleware(generateVideoFeedForSubscriptions) @@ -168,14 +161,19 @@ async function generateVideoFeed (req: express.Request, res: express.Response) { videoChannelId: videoChannel ? videoChannel.id : null } + const server = await getServerActor() const { data } = await VideoModel.listForApi({ start, count: FEEDS.COUNT, sort: req.query.sort, - includeLocalVideos: true, + displayOnlyForFollower: { + actorId: server.id, + orLocalVideos: true + }, nsfw, - filter: req.query.filter as VideoFilter, - withFiles: true, + isLocal: req.query.isLocal, + include: req.query.include | VideoInclude.FILES, + hasFiles: true, countVideos: false, ...options }) @@ -204,14 +202,19 @@ async function generateVideoFeedForSubscriptions (req: express.Request, res: exp start, count: FEEDS.COUNT, sort: req.query.sort, - includeLocalVideos: false, nsfw, - filter: req.query.filter as VideoFilter, - withFiles: true, + isLocal: req.query.isLocal, + + hasFiles: true, + include: req.query.include | VideoInclude.FILES, + countVideos: false, - followerActorId: res.locals.user.Account.Actor.id, + displayOnlyForFollower: { + actorId: res.locals.user.Account.Actor.id, + orLocalVideos: false + }, user: res.locals.user }) @@ -294,7 +297,7 @@ function addVideosToFeed (feed, videos: VideoModel[]) { feed.addItem({ title: video.name, id: video.url, - link: WEBSERVER.URL + '/w/' + video.uuid, + link: WEBSERVER.URL + video.getWatchStaticPath(), description: video.getTruncatedDescription(), content: video.description, author: [