mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-10 23:36:14 -05:00
ES6 migration: server/adapters/storage (#9700)
refs #9589 - Replace vars with const/lets - Replace concatenated strings with ES6 Template Literals - Use ES6 object shorthand
This commit is contained in:
parent
d710baad0d
commit
b17e242fc6
3 changed files with 44 additions and 36 deletions
|
@ -1,7 +1,7 @@
|
|||
// # Local File System Image Storage module
|
||||
// The (default) module for storing images, using the local file system
|
||||
|
||||
var serveStatic = require('express').static,
|
||||
const serveStatic = require('express').static,
|
||||
fs = require('fs-extra'),
|
||||
path = require('path'),
|
||||
Promise = require('bluebird'),
|
||||
|
@ -29,40 +29,39 @@ class LocalFileStore extends StorageBase {
|
|||
* @returns {*}
|
||||
*/
|
||||
save(image, targetDir) {
|
||||
var targetFilename,
|
||||
self = this;
|
||||
let targetFilename;
|
||||
|
||||
// NOTE: the base implementation of `getTargetDir` returns the format this.storagePath/YYYY/MM
|
||||
targetDir = targetDir || this.getTargetDir(this.storagePath);
|
||||
|
||||
return this.getUniqueFileName(image, targetDir).then(function (filename) {
|
||||
return this.getUniqueFileName(image, targetDir).then((filename) => {
|
||||
targetFilename = filename;
|
||||
return fs.mkdirs(targetDir);
|
||||
}).then(function () {
|
||||
}).then(() => {
|
||||
return fs.copy(image.path, targetFilename);
|
||||
}).then(function () {
|
||||
}).then(() => {
|
||||
// The src for the image must be in URI format, not a file system path, which in Windows uses \
|
||||
// For local file system storage can use relative path so add a slash
|
||||
var fullUrl = (
|
||||
const fullUrl = (
|
||||
urlService.utils.urlJoin('/', urlService.utils.getSubdir(),
|
||||
urlService.utils.STATIC_IMAGE_URL_PREFIX,
|
||||
path.relative(self.storagePath, targetFilename))
|
||||
).replace(new RegExp('\\' + path.sep, 'g'), '/');
|
||||
path.relative(this.storagePath, targetFilename))
|
||||
).replace(new RegExp(`\\${path.sep}`, 'g'), '/');
|
||||
|
||||
return fullUrl;
|
||||
}).catch(function (e) {
|
||||
}).catch((e) => {
|
||||
return Promise.reject(e);
|
||||
});
|
||||
}
|
||||
|
||||
exists(fileName, targetDir) {
|
||||
var filePath = path.join(targetDir || this.storagePath, fileName);
|
||||
const filePath = path.join(targetDir || this.storagePath, fileName);
|
||||
|
||||
return fs.stat(filePath)
|
||||
.then(function () {
|
||||
.then(() => {
|
||||
return true;
|
||||
})
|
||||
.catch(function () {
|
||||
.catch(() => {
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
@ -75,21 +74,21 @@ class LocalFileStore extends StorageBase {
|
|||
* @returns {serveStaticContent}
|
||||
*/
|
||||
serve() {
|
||||
var self = this;
|
||||
const {storagePath} = this;
|
||||
|
||||
return function serveStaticContent(req, res, next) {
|
||||
var startedAtMoment = moment();
|
||||
const startedAtMoment = moment();
|
||||
|
||||
return serveStatic(
|
||||
self.storagePath,
|
||||
storagePath,
|
||||
{
|
||||
maxAge: constants.ONE_YEAR_MS,
|
||||
fallthrough: false,
|
||||
onEnd: function onEnd() {
|
||||
onEnd: () => {
|
||||
common.logging.info('LocalFileStorage.serve', req.path, moment().diff(startedAtMoment, 'ms') + 'ms');
|
||||
}
|
||||
}
|
||||
)(req, res, function (err) {
|
||||
)(req, res, (err) => {
|
||||
if (err) {
|
||||
if (err.statusCode === 404) {
|
||||
return next(new common.errors.NotFoundError({
|
||||
|
@ -127,10 +126,10 @@ class LocalFileStore extends StorageBase {
|
|||
// remove trailing slashes
|
||||
options.path = (options.path || '').replace(/\/$|\\$/, '');
|
||||
|
||||
var targetPath = path.join(this.storagePath, options.path);
|
||||
const targetPath = path.join(this.storagePath, options.path);
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
fs.readFile(targetPath, function (err, bytes) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile(targetPath, (err, bytes) => {
|
||||
if (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
return reject(new common.errors.NotFoundError({
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var _ = require('lodash'),
|
||||
const _ = require('lodash'),
|
||||
StorageBase = require('ghost-storage-base'),
|
||||
config = require('../../config'),
|
||||
common = require('../../lib/common'),
|
||||
|
@ -8,8 +8,8 @@ var _ = require('lodash'),
|
|||
* type: images
|
||||
*/
|
||||
function getStorage() {
|
||||
var storageChoice = config.get('storage:active'),
|
||||
storageConfig,
|
||||
const storageChoice = config.get('storage:active');
|
||||
let storageConfig,
|
||||
CustomStorage,
|
||||
customStorage;
|
||||
|
||||
|
@ -29,7 +29,7 @@ function getStorage() {
|
|||
|
||||
// CASE: load adapter from custom path (.../content/storage)
|
||||
try {
|
||||
CustomStorage = require(config.getContentPath('storage') + storageChoice);
|
||||
CustomStorage = require(`${config.getContentPath('storage')}${storageChoice}`);
|
||||
} catch (err) {
|
||||
if (err.message.match(/strict mode/gi)) {
|
||||
throw new common.errors.IncorrectUsageError({
|
||||
|
@ -38,33 +38,33 @@ function getStorage() {
|
|||
err: err
|
||||
});
|
||||
// CASE: if module not found it can be an error within the adapter (cannot find bluebird for example)
|
||||
} else if (err.code === 'MODULE_NOT_FOUND' && err.message.indexOf(config.getContentPath('storage') + storageChoice) === -1) {
|
||||
} else if (err.code === 'MODULE_NOT_FOUND' && err.message.indexOf(`${config.getContentPath('storage')}${storageChoice}`) === -1) {
|
||||
throw new common.errors.IncorrectUsageError({
|
||||
message: 'We have detected an error in your custom storage adapter.',
|
||||
err: err
|
||||
err
|
||||
});
|
||||
// CASE: only throw error if module does exist
|
||||
} else if (err.code !== 'MODULE_NOT_FOUND') {
|
||||
throw new common.errors.IncorrectUsageError({
|
||||
message: 'We have detected an unknown error in your custom storage adapter.',
|
||||
err: err
|
||||
err
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// CASE: check in the default storage path
|
||||
try {
|
||||
CustomStorage = CustomStorage || require(config.get('paths').internalStoragePath + storageChoice);
|
||||
CustomStorage = CustomStorage || require(`${config.get('paths').internalStoragePath}${storageChoice}`);
|
||||
} catch (err) {
|
||||
if (err.code === 'MODULE_NOT_FOUND') {
|
||||
throw new common.errors.IncorrectUsageError({
|
||||
err: err,
|
||||
context: 'We cannot find your adapter in: ' + config.getContentPath('storage') + ' or: ' + config.get('paths').internalStoragePath
|
||||
err,
|
||||
context: `We cannot find your adapter in: ${config.getContentPath('storage')} or: ${config.get('paths').internalStoragePath}`
|
||||
});
|
||||
} else {
|
||||
throw new common.errors.IncorrectUsageError({
|
||||
message: 'We have detected an error in your custom storage adapter.',
|
||||
err: err
|
||||
err
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var urlService = require('../../services/url');
|
||||
const urlService = require('../../services/url');
|
||||
|
||||
/**
|
||||
* @TODO: move `events.js` to here - e.g. storageUtils.getStorage
|
||||
|
@ -15,8 +15,17 @@ var urlService = require('../../services/url');
|
|||
*/
|
||||
exports.getLocalFileStoragePath = function getLocalFileStoragePath(imagePath) {
|
||||
// The '/' in urlJoin is necessary to add the '/' to `content/images`, if no subdirectory is setup
|
||||
var urlRegExp = new RegExp('^' + urlService.utils.urlJoin(urlService.utils.urlFor('home', true), urlService.utils.getSubdir(), '/', urlService.utils.STATIC_IMAGE_URL_PREFIX)),
|
||||
filePathRegExp = new RegExp('^' + urlService.utils.urlJoin(urlService.utils.getSubdir(), '/', urlService.utils.STATIC_IMAGE_URL_PREFIX));
|
||||
const urlRegExp = new RegExp(`^${urlService.utils.urlJoin(
|
||||
urlService.utils.urlFor('home', true),
|
||||
urlService.utils.getSubdir(),
|
||||
'/',
|
||||
urlService.utils.STATIC_IMAGE_URL_PREFIX)}`
|
||||
),
|
||||
filePathRegExp = new RegExp(`^${urlService.utils.urlJoin(
|
||||
urlService.utils.getSubdir(),
|
||||
'/',
|
||||
urlService.utils.STATIC_IMAGE_URL_PREFIX)}`
|
||||
);
|
||||
|
||||
if (imagePath.match(urlRegExp)) {
|
||||
return imagePath.replace(urlRegExp, '');
|
||||
|
@ -34,7 +43,7 @@ exports.getLocalFileStoragePath = function getLocalFileStoragePath(imagePath) {
|
|||
*/
|
||||
|
||||
exports.isLocalImage = function isLocalImage(imagePath) {
|
||||
var localImagePath = this.getLocalFileStoragePath(imagePath);
|
||||
const localImagePath = this.getLocalFileStoragePath(imagePath);
|
||||
|
||||
if (localImagePath !== imagePath) {
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue