event's API support update and image_url

This commit is contained in:
les
2020-05-14 22:36:58 +02:00
parent 34395c3d66
commit 22381d1fe6
7 changed files with 300 additions and 232 deletions

View File

@@ -2,7 +2,13 @@ const settingsController = require('./api/controller/settings')
const acceptLanguage = require('accept-language')
const moment = require('moment-timezone')
const config = require('config')
const debug = require('debug')('helpers')
const pkg = require('../package.json')
const fs = require('fs')
const path = require('path')
const sharp = require('sharp')
const axios = require('axios')
const crypto = require('crypto')
const DOMPurify = require('dompurify')
const { JSDOM } = require('jsdom')
@@ -59,6 +65,45 @@ module.exports = {
moment.locale(req.settings.locale)
moment.tz.setDefault(req.settings.instance_timezone)
next()
},
async getImageFromURL (url) {
debug(`getImageFromURL ${url}`)
const filename = crypto.randomBytes(16).toString('hex') + '.webp'
const finalPath = path.resolve(config.upload_path, filename)
const thumbPath = path.resolve(config.upload_path, 'thumb', filename)
const outStream = fs.createWriteStream(finalPath)
const thumbStream = fs.createWriteStream(thumbPath)
const resizer = sharp().resize(1200).webp({ quality: 95 })
const thumbnailer = sharp().resize(400).webp({ quality: 90 })
const response = await axios({ method: 'GET', url, responseType: 'stream' })
return new Promise((resolve, reject) => {
let onError = false
const err = e => {
if (onError) {
return
}
onError = true
reject(e)
}
response.data
.pipe(thumbnailer)
.on('error', err)
.pipe(thumbStream)
.on('error', err)
response.data
.pipe(resizer)
.on('error', err)
.pipe(outStream)
.on('error', err)
outStream.on('finish', () => resolve(filename))
})
}
}