diff options
Diffstat (limited to 'server/controllers/api/accounts.ts')
-rw-r--r-- | server/controllers/api/accounts.ts | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/server/controllers/api/accounts.ts b/server/controllers/api/accounts.ts index 4dc0cc16d..06ab04033 100644 --- a/server/controllers/api/accounts.ts +++ b/server/controllers/api/accounts.ts | |||
@@ -1,8 +1,11 @@ | |||
1 | import * as express from 'express' | 1 | import * as express from 'express' |
2 | import { getFormattedObjects } from '../../helpers/utils' | 2 | import { getFormattedObjects } from '../../helpers/utils' |
3 | import { asyncMiddleware, paginationValidator, setDefaultSort, setDefaultPagination } from '../../middlewares' | 3 | import { asyncMiddleware, optionalAuthenticate, paginationValidator, setDefaultPagination, setDefaultSort } from '../../middlewares' |
4 | import { accountsGetValidator, accountsSortValidator } from '../../middlewares/validators' | 4 | import { accountsGetValidator, accountsSortValidator, videosSortValidator } from '../../middlewares/validators' |
5 | import { AccountModel } from '../../models/account/account' | 5 | import { AccountModel } from '../../models/account/account' |
6 | import { VideoModel } from '../../models/video/video' | ||
7 | import { VideoSortField } from '../../../client/src/app/shared/video/sort-field.type' | ||
8 | import { isNSFWHidden } from '../../helpers/express-utils' | ||
6 | 9 | ||
7 | const accountsRouter = express.Router() | 10 | const accountsRouter = express.Router() |
8 | 11 | ||
@@ -19,6 +22,16 @@ accountsRouter.get('/:id', | |||
19 | getAccount | 22 | getAccount |
20 | ) | 23 | ) |
21 | 24 | ||
25 | accountsRouter.get('/:id/videos', | ||
26 | asyncMiddleware(accountsGetValidator), | ||
27 | paginationValidator, | ||
28 | videosSortValidator, | ||
29 | setDefaultSort, | ||
30 | setDefaultPagination, | ||
31 | optionalAuthenticate, | ||
32 | asyncMiddleware(getAccountVideos) | ||
33 | ) | ||
34 | |||
22 | // --------------------------------------------------------------------------- | 35 | // --------------------------------------------------------------------------- |
23 | 36 | ||
24 | export { | 37 | export { |
@@ -28,7 +41,9 @@ export { | |||
28 | // --------------------------------------------------------------------------- | 41 | // --------------------------------------------------------------------------- |
29 | 42 | ||
30 | function getAccount (req: express.Request, res: express.Response, next: express.NextFunction) { | 43 | function getAccount (req: express.Request, res: express.Response, next: express.NextFunction) { |
31 | return res.json(res.locals.account.toFormattedJSON()) | 44 | const account: AccountModel = res.locals.account |
45 | |||
46 | return res.json(account.toFormattedJSON()) | ||
32 | } | 47 | } |
33 | 48 | ||
34 | async function listAccounts (req: express.Request, res: express.Response, next: express.NextFunction) { | 49 | async function listAccounts (req: express.Request, res: express.Response, next: express.NextFunction) { |
@@ -36,3 +51,19 @@ async function listAccounts (req: express.Request, res: express.Response, next: | |||
36 | 51 | ||
37 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | 52 | return res.json(getFormattedObjects(resultList.data, resultList.total)) |
38 | } | 53 | } |
54 | |||
55 | async function getAccountVideos (req: express.Request, res: express.Response, next: express.NextFunction) { | ||
56 | const account: AccountModel = res.locals.account | ||
57 | |||
58 | const resultList = await VideoModel.listForApi( | ||
59 | req.query.start as number, | ||
60 | req.query.count as number, | ||
61 | req.query.sort as VideoSortField, | ||
62 | isNSFWHidden(res), | ||
63 | null, | ||
64 | false, | ||
65 | account.id | ||
66 | ) | ||
67 | |||
68 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | ||
69 | } | ||