Ghost/core/server/web/utils.js
Nazar Gargol 0faf89b5ab Added ability to resize and compress images on upload (#9837)
refs #4453

* On by default

* Added config to disable resizing

* Added basic image optimization processing

* Added dep: sharp (optional dep)

* Added resize middleware

* Take care of rotation based on EXIF information

* Removed all meta data from optimised image

* Added handling if sharp could not get installed

* Do not read ext twice - optimisation

* Do not call sharp if config is disabled

* Do not remove the original image which was uploaded (store 2 images)

* Support of `req.files` for internal logic

* Disabled cache to enable file removal on Windows
2018-08-30 17:30:36 +01:00

46 lines
1.3 KiB
JavaScript

const url = require('url'),
_ = require('lodash');
let _private = {};
_private.removeDoubleCharacters = function removeDoubleCharacters(character, string) {
let stringArray = string.split('');
return stringArray.reduce(function (newString, currentCharacter, index) {
if (
currentCharacter === character &&
stringArray[index + 1] === character
) {
return newString;
}
return newString + currentCharacter;
}, '');
};
module.exports.removeOpenRedirectFromUrl = function removeOpenRedirectFromUrl(urlString) {
let parsedUrl = url.parse(urlString);
return (
// http://
(parsedUrl.protocol ? parsedUrl.protocol + '//' : '') +
(parsedUrl.auth || '') +
(parsedUrl.host || '') +
_private.removeDoubleCharacters('/', parsedUrl.path) +
(parsedUrl.hash || '')
);
};
module.exports.checkFileExists = function checkFileExists(fileData) {
return !!(fileData.mimetype && fileData.path);
};
module.exports.checkFileIsValid = function checkFileIsValid(fileData, types, extensions) {
const type = fileData.mimetype;
if (_.includes(types, type) && _.includes(extensions, fileData.ext)) {
return true;
}
return false;
};