"@types/request": "^2.0.3",
"@types/sanitize-html": "^1.14.0",
"@types/sequelize": "^4.0.55",
+ "@types/sharp": "^0.17.6",
"@types/supertest": "^2.0.3",
"@types/validator": "^6.2.0",
"@types/webtorrent": "^0.98.4",
.then(() => {
// ----------- Make the server listening -----------
server.listen(port, () => {
- VideosPreviewCache.Instance.init(CONFIG.CACHE.PREVIEWS.FILE_SIZE)
+ VideosPreviewCache.Instance.init(CONFIG.CACHE.PREVIEWS.SIZE)
activitypubHttpJobScheduler.activate()
transcodingJobScheduler.activate()
asyncMiddleware(inboxController)
)
-inboxRouter.post('/account/:name/inbox',
+inboxRouter.post('/accounts/:name/inbox',
signatureValidator,
asyncMiddleware(checkSignature),
localAccountValidator,
const outboxRouter = express.Router()
-outboxRouter.get('/account/:name/outbox',
+outboxRouter.get('/accounts/:name/outbox',
localAccountValidator,
asyncMiddleware(outboxController)
)
import * as express from 'express'
import { extname, join } from 'path'
+import * as sharp from 'sharp'
import * as uuidv4 from 'uuid/v4'
import { UserCreate, UserRight, UserRole, UserUpdate, UserUpdateMe, UserVideoRate as FormattedUserVideoRate } from '../../../shared'
-import { renamePromise } from '../../helpers/core-utils'
+import { renamePromise, unlinkPromise } from '../../helpers/core-utils'
import { retryTransactionWrapper } from '../../helpers/database-utils'
import { logger } from '../../helpers/logger'
import { createReqFiles, getFormattedObjects } from '../../helpers/utils'
-import { AVATAR_MIMETYPE_EXT, CONFIG, sequelizeTypescript } from '../../initializers'
+import { AVATAR_MIMETYPE_EXT, AVATARS_SIZE, CONFIG, sequelizeTypescript } from '../../initializers'
import { createUserAccountAndChannel } from '../../lib/user'
import {
asyncMiddleware, authenticate, ensureUserHasRight, ensureUserRegistrationAllowed, paginationValidator, setPagination, setUsersSort,
const avatarName = uuidv4() + extension
const destination = join(avatarDir, avatarName)
- await renamePromise(source, destination)
+ await sharp(source)
+ .resize(AVATARS_SIZE.width, AVATARS_SIZE.height)
+ .toFile(destination)
+
+ await unlinkPromise(source)
const { avatar } = await sequelizeTypescript.transaction(async t => {
const avatar = await AvatarModel.create({
width: 560,
height: 315
}
+const AVATARS_SIZE = {
+ width: 120,
+ height: 120
+}
const EMBED_SIZE = {
width: 560,
export {
API_VERSION,
+ AVATARS_SIZE,
ACCEPT_HEADERS,
BCRYPT_SALT_SIZE,
CACHE,
import { CONSTRAINTS_FIELDS } from '../../initializers'
import { UserModel } from '../../models/account/user'
import { areValidationErrors } from './utils'
-import Multer = require('multer')
const usersAddValidator = [
body('username').custom(isUserUsernameValid).withMessage('Should have a valid username (lowercase alphanumeric characters)'),
),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
- logger.debug('Checking usersUpdateMyAvatarValidator parameters', { parameters: req.body })
+ logger.debug('Checking usersUpdateMyAvatarValidator parameters', { files: req.files })
if (areValidationErrors(req, res)) return
@AllowNull(false)
@Default(SERVERS_SCORE.BASE)
@IsInt
- @Max(SERVERS_SCORE.max)
+ @Max(SERVERS_SCORE.MAX)
@Column
score: number
static listThreadCommentsForApi (videoId: number, threadId: number) {
const query = {
- order: [ [ 'createdAt', 'DESC' ] ],
+ order: [ [ 'createdAt', 'ASC' ] ],
where: {
videoId,
[ Sequelize.Op.or ]: [
const res = await getMyUserInformation(server.url, accessTokenUser)
const user = res.body
- const test = await testVideoImage(server.url, 'avatar', user.account.avatar.path, '.png')
+ const test = await testVideoImage(server.url, 'avatar-resized', user.account.avatar.path, '.png')
expect(test).to.equal(true)
})
"@types/express-serve-static-core" "*"
"@types/mime" "*"
+"@types/sharp@^0.17.6":
+ version "0.17.6"
+ resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.17.6.tgz#3138602163b30b4969f75a2755a3f90caaaa9be3"
+ dependencies:
+ "@types/node" "*"
+
"@types/simple-peer@*":
version "6.1.4"
resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-6.1.4.tgz#1d1384e1d8dc17b9e7d1673d704febe91ca48191"