X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Flive.ts;h=ec4c073b58f6e9beb3e0ecdaaa13ffa481320f75;hb=26e3e98ff0e222a9fb9226938ac6902af77921bd;hp=e516589278968fa4c695feb4242479e182468def;hpb=961cbe4269e5f34639e29310fb3d90a6cb1bd6bc;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/live.ts b/server/controllers/api/videos/live.ts index e51658927..ec4c073b5 100644 --- a/server/controllers/api/videos/live.ts +++ b/server/controllers/api/videos/live.ts @@ -1,13 +1,21 @@ import express from 'express' import { exists } from '@server/helpers/custom-validators/misc' import { createReqFiles } from '@server/helpers/express-utils' +import { getFormattedObjects } from '@server/helpers/utils' import { ASSETS_PATH, MIMETYPES } from '@server/initializers/constants' import { getLocalVideoActivityPubUrl } from '@server/lib/activitypub/url' import { federateVideoIfNeeded } from '@server/lib/activitypub/videos' import { Hooks } from '@server/lib/plugins/hooks' import { buildLocalVideoFromReq, buildVideoThumbnailsFromReq, setVideoTags } from '@server/lib/video' -import { videoLiveAddValidator, videoLiveGetValidator, videoLiveUpdateValidator } from '@server/middlewares/validators/videos/video-live' +import { + videoLiveAddValidator, + videoLiveFindReplaySessionValidator, + videoLiveGetValidator, + videoLiveListSessionsValidator, + videoLiveUpdateValidator +} from '@server/middlewares/validators/videos/video-live' import { VideoLiveModel } from '@server/models/video/video-live' +import { VideoLiveSessionModel } from '@server/models/video/video-live-session' import { MVideoDetails, MVideoFullLight } from '@server/types/models' import { buildUUID, uuidToShort } from '@shared/extra-utils' import { HttpStatusCode, LiveVideoCreate, LiveVideoLatencyMode, LiveVideoUpdate, UserRight, VideoState } from '@shared/models' @@ -28,6 +36,13 @@ liveRouter.post('/live', asyncRetryTransactionMiddleware(addLiveVideo) ) +liveRouter.get('/live/:videoId/sessions', + authenticate, + asyncMiddleware(videoLiveGetValidator), + videoLiveListSessionsValidator, + asyncMiddleware(getLiveVideoSessions) +) + liveRouter.get('/live/:videoId', optionalAuthenticate, asyncMiddleware(videoLiveGetValidator), @@ -41,6 +56,11 @@ liveRouter.put('/live/:videoId', asyncRetryTransactionMiddleware(updateLiveVideo) ) +liveRouter.get('/:videoId/live-session', + asyncMiddleware(videoLiveFindReplaySessionValidator), + getLiveReplaySession +) + // --------------------------------------------------------------------------- export { @@ -55,6 +75,20 @@ function getLiveVideo (req: express.Request, res: express.Response) { return res.json(videoLive.toFormattedJSON(canSeePrivateLiveInformation(res))) } +function getLiveReplaySession (req: express.Request, res: express.Response) { + const session = res.locals.videoLiveSession + + return res.json(session.toFormattedJSON()) +} + +async function getLiveVideoSessions (req: express.Request, res: express.Response) { + const videoLive = res.locals.videoLive + + const data = await VideoLiveSessionModel.listSessionsOfLiveForAPI({ videoId: videoLive.videoId }) + + return res.json(getFormattedObjects(data, data.length)) +} + function canSeePrivateLiveInformation (res: express.Response) { const user = res.locals.oauth?.token.User if (!user) return false