aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/controllers/activitypub/outbox.ts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-05-25 16:21:16 +0200
committerChocobozzz <me@florianbigard.com>2018-05-25 16:21:16 +0200
commit8fffe21a7bc96d08b229293d66ddba576e609790 (patch)
tree5ebd5f5198a59084c5338ce197d7e836b39200a4 /server/controllers/activitypub/outbox.ts
parente251f170b00b2014ac4e823113c6ff40e3fb1471 (diff)
downloadPeerTube-8fffe21a7bc96d08b229293d66ddba576e609790.tar.gz
PeerTube-8fffe21a7bc96d08b229293d66ddba576e609790.tar.zst
PeerTube-8fffe21a7bc96d08b229293d66ddba576e609790.zip
Refractor and optimize AP collections
Only display urls in general object, and paginate video comments, shares, likes and dislikes
Diffstat (limited to 'server/controllers/activitypub/outbox.ts')
-rw-r--r--server/controllers/activitypub/outbox.ts24
1 files changed, 12 insertions, 12 deletions
diff --git a/server/controllers/activitypub/outbox.ts b/server/controllers/activitypub/outbox.ts
index c9e087a13..97bf9b052 100644
--- a/server/controllers/activitypub/outbox.ts
+++ b/server/controllers/activitypub/outbox.ts
@@ -1,16 +1,15 @@
1import * as express from 'express' 1import * as express from 'express'
2import { Activity } from '../../../shared/models/activitypub/activity' 2import { Activity } from '../../../shared/models/activitypub/activity'
3import { VideoPrivacy } from '../../../shared/models/videos' 3import { VideoPrivacy } from '../../../shared/models/videos'
4import { activityPubCollectionPagination } from '../../helpers/activitypub' 4import { activityPubCollectionPagination, activityPubContextify } from '../../helpers/activitypub'
5import { pageToStartAndCount } from '../../helpers/core-utils'
6import { logger } from '../../helpers/logger' 5import { logger } from '../../helpers/logger'
7import { ACTIVITY_PUB } from '../../initializers/constants'
8import { announceActivityData, createActivityData } from '../../lib/activitypub/send' 6import { announceActivityData, createActivityData } from '../../lib/activitypub/send'
9import { buildAudience } from '../../lib/activitypub/audience' 7import { buildAudience } from '../../lib/activitypub/audience'
10import { asyncMiddleware, localAccountValidator } from '../../middlewares' 8import { asyncMiddleware, localAccountValidator } from '../../middlewares'
11import { AccountModel } from '../../models/account/account' 9import { AccountModel } from '../../models/account/account'
12import { ActorModel } from '../../models/activitypub/actor' 10import { ActorModel } from '../../models/activitypub/actor'
13import { VideoModel } from '../../models/video/video' 11import { VideoModel } from '../../models/video/video'
12import { activityPubResponse } from './utils'
14 13
15const outboxRouter = express.Router() 14const outboxRouter = express.Router()
16 15
@@ -30,10 +29,17 @@ export {
30async function outboxController (req: express.Request, res: express.Response, next: express.NextFunction) { 29async function outboxController (req: express.Request, res: express.Response, next: express.NextFunction) {
31 const account: AccountModel = res.locals.account 30 const account: AccountModel = res.locals.account
32 const actor = account.Actor 31 const actor = account.Actor
32 const actorOutboxUrl = account.Actor.url + '/outbox'
33
34 logger.info('Receiving outbox request for %s.', actorOutboxUrl)
33 35
34 const page = req.query.page || 1 36 const handler = (start: number, count: number) => buildActivities(actor, start, count)
35 const { start, count } = pageToStartAndCount(page, ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE) 37 const json = await activityPubCollectionPagination(actorOutboxUrl, handler, req.query.page)
38
39 return activityPubResponse(activityPubContextify(json), res)
40}
36 41
42async function buildActivities (actor: ActorModel, start: number, count: number) {
37 const data = await VideoModel.listAllAndSharedByActorForOutbox(actor.id, start, count) 43 const data = await VideoModel.listAllAndSharedByActorForOutbox(actor.id, start, count)
38 const activities: Activity[] = [] 44 const activities: Activity[] = []
39 45
@@ -62,14 +68,8 @@ async function outboxController (req: express.Request, res: express.Response, ne
62 } 68 }
63 } 69 }
64 70
65 const newResult = { 71 return {
66 data: activities, 72 data: activities,
67 total: data.total 73 total: data.total
68 } 74 }
69 const actorOutboxUrl = account.Actor.url + '/outbox'
70 const json = activityPubCollectionPagination(actorOutboxUrl, page, newResult)
71
72 logger.info('Receiving outbox request for %s.', actorOutboxUrl)
73
74 return res.json(json).end()
75} 75}