X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fmiddlewares%2Fvalidators%2Fuser-subscriptions.ts;h=d8d3fc28b8fb9e6756ab9bbb76071d414e44b5b4;hb=99b757488c077cee7d0ab89eeec181a7ee6290eb;hp=9bc8c87e74b28164d3cd4edd9c896a71607d2d92;hpb=c8861d5dc0436ef4342ce517241e3591fa256a13;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/user-subscriptions.ts b/server/middlewares/validators/user-subscriptions.ts index 9bc8c87e7..d8d3fc28b 100644 --- a/server/middlewares/validators/user-subscriptions.ts +++ b/server/middlewares/validators/user-subscriptions.ts @@ -1,18 +1,29 @@ -import * as express from 'express' +import express from 'express' import { body, param, query } from 'express-validator' -import { logger } from '../../helpers/logger' -import { areValidationErrors } from './utils' -import { ActorFollowModel } from '../../models/activitypub/actor-follow' +import { arrayify } from '@shared/core-utils' +import { HttpStatusCode } from '../../../shared/models/http/http-error-codes' import { areValidActorHandles, isValidActorHandle } from '../../helpers/custom-validators/activitypub/actor' -import { toArray } from '../../helpers/custom-validators/misc' import { WEBSERVER } from '../../initializers/constants' +import { ActorFollowModel } from '../../models/actor/actor-follow' +import { areValidationErrors } from './shared' -const userSubscriptionAddValidator = [ - body('uri').custom(isValidActorHandle).withMessage('Should have a valid URI to follow (username@domain)'), +const userSubscriptionListValidator = [ + query('search') + .optional() + .not().isEmpty(), (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking userSubscriptionAddValidator parameters', { parameters: req.body }) + if (areValidationErrors(req, res)) return + + return next() + } +] +const userSubscriptionAddValidator = [ + body('uri') + .custom(isValidActorHandle).withMessage('Should have a valid URI to follow (username@domain)'), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { if (areValidationErrors(req, res)) return return next() @@ -21,12 +32,10 @@ const userSubscriptionAddValidator = [ const areSubscriptionsExistValidator = [ query('uris') - .customSanitizer(toArray) - .custom(areValidActorHandles).withMessage('Should have a valid uri array'), + .customSanitizer(arrayify) + .custom(areValidActorHandles).withMessage('Should have a valid array of URIs'), (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking areSubscriptionsExistValidator parameters', { parameters: req.query }) - if (areValidationErrors(req, res)) return return next() @@ -34,26 +43,28 @@ const areSubscriptionsExistValidator = [ ] const userSubscriptionGetValidator = [ - param('uri').custom(isValidActorHandle).withMessage('Should have a valid URI to unfollow'), + param('uri') + .custom(isValidActorHandle), async (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking userSubscriptionGetValidator parameters', { parameters: req.params }) - if (areValidationErrors(req, res)) return let [ name, host ] = req.params.uri.split('@') if (host === WEBSERVER.HOST) host = null const user = res.locals.oauth.token.User - const subscription = await ActorFollowModel.loadByActorAndTargetNameAndHostForAPI(user.Account.Actor.id, name, host) - - if (!subscription || !subscription.ActorFollowing.VideoChannel) { - return res - .status(404) - .json({ - error: `Subscription ${req.params.uri} not found.` - }) - .end() + const subscription = await ActorFollowModel.loadByActorAndTargetNameAndHostForAPI({ + actorId: user.Account.Actor.id, + targetName: name, + targetHost: host, + state: 'accepted' + }) + + if (!subscription?.ActorFollowing.VideoChannel) { + return res.fail({ + status: HttpStatusCode.NOT_FOUND_404, + message: `Subscription ${req.params.uri} not found.` + }) } res.locals.subscription = subscription @@ -65,6 +76,7 @@ const userSubscriptionGetValidator = [ export { areSubscriptionsExistValidator, + userSubscriptionListValidator, userSubscriptionAddValidator, userSubscriptionGetValidator }