From 1e37d32f4bdc51045cd85d01ea1035fd53e0d32c Mon Sep 17 00:00:00 2001 From: Kimsible Date: Wed, 28 Apr 2021 17:33:55 +0200 Subject: Add server API actors route --- server/controllers/api/actor.ts | 37 +++++++++++++++++++++++++++++++++++++ server/controllers/api/index.ts | 2 ++ 2 files changed, 39 insertions(+) create mode 100644 server/controllers/api/actor.ts (limited to 'server/controllers') diff --git a/server/controllers/api/actor.ts b/server/controllers/api/actor.ts new file mode 100644 index 000000000..da7f2eb91 --- /dev/null +++ b/server/controllers/api/actor.ts @@ -0,0 +1,37 @@ +import * as express from 'express' +import { JobQueue } from '../../lib/job-queue' +import { asyncMiddleware } from '../../middlewares' +import { actorNameWithHostGetValidator } from '../../middlewares/validators' + +const actorRouter = express.Router() + +actorRouter.get('/:actorName', + asyncMiddleware(actorNameWithHostGetValidator), + getActor +) + +// --------------------------------------------------------------------------- + +export { + actorRouter +} + +// --------------------------------------------------------------------------- + +function getActor (req: express.Request, res: express.Response) { + let accountOrVideoChannel + + if (res.locals.account) { + accountOrVideoChannel = res.locals.account + } + + if (res.locals.videoChannel) { + accountOrVideoChannel = res.locals.videoChannel + } + + if (accountOrVideoChannel.isOutdated()) { + JobQueue.Instance.createJob({ type: 'activitypub-refresher', payload: { type: 'actor', url: accountOrVideoChannel.Actor.url } }) + } + + return res.json(accountOrVideoChannel.toFormattedJSON()) +} diff --git a/server/controllers/api/index.ts b/server/controllers/api/index.ts index 7ade1df3a..4f4561ffd 100644 --- a/server/controllers/api/index.ts +++ b/server/controllers/api/index.ts @@ -15,6 +15,7 @@ import { pluginRouter } from './plugins' import { searchRouter } from './search' import { serverRouter } from './server' import { usersRouter } from './users' +import { actorRouter } from './actor' import { videoChannelRouter } from './video-channel' import { videoPlaylistRouter } from './video-playlist' import { videosRouter } from './videos' @@ -39,6 +40,7 @@ apiRouter.use('/bulk', bulkRouter) apiRouter.use('/oauth-clients', oauthClientsRouter) apiRouter.use('/config', configRouter) apiRouter.use('/users', usersRouter) +apiRouter.use('/actors', actorRouter) apiRouter.use('/accounts', accountsRouter) apiRouter.use('/video-channels', videoChannelRouter) apiRouter.use('/video-playlists', videoPlaylistRouter) -- cgit v1.2.3