mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 19:42:24 +02:00
Add shares forward and collection on videos/video channels
This commit is contained in:
parent
74bb2cb834
commit
4e50b6a1c9
29 changed files with 546 additions and 133 deletions
|
@ -1,22 +1,26 @@
|
|||
// Intercept ActivityPub client requests
|
||||
import * as express from 'express'
|
||||
import { pageToStartAndCount } from '../../helpers'
|
||||
import { activityPubCollectionPagination } from '../../helpers/activitypub'
|
||||
|
||||
import { database as db } from '../../initializers'
|
||||
import { executeIfActivityPub, localAccountValidator } from '../../middlewares'
|
||||
import { pageToStartAndCount } from '../../helpers'
|
||||
import { AccountInstance, VideoChannelInstance } from '../../models'
|
||||
import { activityPubCollectionPagination } from '../../helpers/activitypub'
|
||||
import { ACTIVITY_PUB, CONFIG } from '../../initializers/constants'
|
||||
import { buildVideoChannelAnnounceToFollowers } from '../../lib/activitypub/send/send-announce'
|
||||
import { buildVideoAnnounceToFollowers } from '../../lib/index'
|
||||
import { executeIfActivityPub, localAccountValidator } from '../../middlewares'
|
||||
import { asyncMiddleware } from '../../middlewares/async'
|
||||
import { videosGetValidator } from '../../middlewares/validators/videos'
|
||||
import { videoChannelsGetValidator, videoChannelsShareValidator } from '../../middlewares/validators/video-channels'
|
||||
import { videosGetValidator, videosShareValidator } from '../../middlewares/validators/videos'
|
||||
import { AccountInstance, VideoChannelInstance } from '../../models'
|
||||
import { VideoChannelShareInstance } from '../../models/video/video-channel-share-interface'
|
||||
import { VideoInstance } from '../../models/video/video-interface'
|
||||
import { videoChannelsGetValidator } from '../../middlewares/validators/video-channels'
|
||||
import { VideoShareInstance } from '../../models/video/video-share-interface'
|
||||
|
||||
const activityPubClientRouter = express.Router()
|
||||
|
||||
activityPubClientRouter.get('/account/:name',
|
||||
executeIfActivityPub(localAccountValidator),
|
||||
executeIfActivityPub(asyncMiddleware(accountController))
|
||||
executeIfActivityPub(accountController)
|
||||
)
|
||||
|
||||
activityPubClientRouter.get('/account/:name/followers',
|
||||
|
@ -31,7 +35,12 @@ activityPubClientRouter.get('/account/:name/following',
|
|||
|
||||
activityPubClientRouter.get('/videos/watch/:id',
|
||||
executeIfActivityPub(videosGetValidator),
|
||||
executeIfActivityPub(asyncMiddleware(videoController))
|
||||
executeIfActivityPub(videoController)
|
||||
)
|
||||
|
||||
activityPubClientRouter.get('/videos/watch/:id/announces/:accountId',
|
||||
executeIfActivityPub(asyncMiddleware(videosShareValidator)),
|
||||
executeIfActivityPub(asyncMiddleware(videoAnnounceController))
|
||||
)
|
||||
|
||||
activityPubClientRouter.get('/video-channels/:id',
|
||||
|
@ -39,6 +48,11 @@ activityPubClientRouter.get('/video-channels/:id',
|
|||
executeIfActivityPub(asyncMiddleware(videoChannelController))
|
||||
)
|
||||
|
||||
activityPubClientRouter.get('/video-channels/:id/announces/:accountId',
|
||||
executeIfActivityPub(asyncMiddleware(videoChannelsShareValidator)),
|
||||
executeIfActivityPub(asyncMiddleware(videoChannelAnnounceController))
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export {
|
||||
|
@ -47,7 +61,7 @@ export {
|
|||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
async function accountController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
function accountController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
const account: AccountInstance = res.locals.account
|
||||
|
||||
return res.json(account.toActivityPubObject()).end()
|
||||
|
@ -77,12 +91,26 @@ async function accountFollowingController (req: express.Request, res: express.Re
|
|||
return res.json(activityPubResult)
|
||||
}
|
||||
|
||||
async function videoController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
function videoController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
const video: VideoInstance = res.locals.video
|
||||
|
||||
return res.json(video.toActivityPubObject())
|
||||
}
|
||||
|
||||
async function videoAnnounceController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
const share = res.locals.videoShare as VideoShareInstance
|
||||
const object = await buildVideoAnnounceToFollowers(share.Account, res.locals.video, undefined)
|
||||
|
||||
return res.json(object)
|
||||
}
|
||||
|
||||
async function videoChannelAnnounceController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
const share = res.locals.videoChannelShare as VideoChannelShareInstance
|
||||
const object = await buildVideoChannelAnnounceToFollowers(share.Account, share.VideoChannel, undefined)
|
||||
|
||||
return res.json(object)
|
||||
}
|
||||
|
||||
async function videoChannelController (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
const videoChannel: VideoChannelInstance = res.locals.videoChannel
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue