Ghost/core/shared/config/helpers.js
Naz 151ab6968c Added local file storage adapter
refs https://github.com/TryGhost/Toolbox/issues/114

- This adapter is meant to power Files API
- The files will be stored under `/files/` in the configured content path and under `/content/files/` URL.
2021-11-08 11:29:33 +04:00

66 lines
2.1 KiB
JavaScript

const path = require('path');
/**
* @callback isPrivacyDisabledFn
* @param {string} privacyFlag - the flag to be looked up
* @returns {boolean}
*/
const isPrivacyDisabled = function isPrivacyDisabled(privacyFlag) {
if (!this.get('privacy')) {
return false;
}
// CASE: disable all privacy features
if (this.get('privacy').useTinfoil === true) {
// CASE: you can still enable single features
if (this.get('privacy')[privacyFlag] === true) {
return false;
}
return true;
}
return this.get('privacy')[privacyFlag] === false;
};
/**
* @callback getContentPathFn
* @param {string} type - the type of context you want the path for
* @returns {string}
*/
const getContentPath = function getContentPath(type) {
switch (type) {
case 'images':
return path.join(this.get('paths:contentPath'), 'images/');
case 'media':
return path.join(this.get('paths:contentPath'), 'media/');
case 'files':
return path.join(this.get('paths:contentPath'), 'files/');
case 'themes':
return path.join(this.get('paths:contentPath'), 'themes/');
case 'adapters':
return path.join(this.get('paths:contentPath'), 'adapters/');
case 'logs':
return path.join(this.get('paths:contentPath'), 'logs/');
case 'data':
return path.join(this.get('paths:contentPath'), 'data/');
case 'settings':
return path.join(this.get('paths:contentPath'), 'settings/');
default:
// new Error is allowed here, as we do not want config to depend on @tryghost/error
// @TODO: revisit this decision when @tryghost/error is no longer dependent on all of ghost-ignition
// eslint-disable-next-line no-restricted-syntax
throw new Error('getContentPath was called with: ' + type);
}
};
/**
* @typedef ConfigHelpers
* @property {isPrivacyDisabledFn} isPrivacyDisabled
* @property {getContentPathFn} getContentPath
*/
module.exports.bindAll = (nconf) => {
nconf.isPrivacyDisabled = isPrivacyDisabled.bind(nconf);
nconf.getContentPath = getContentPath.bind(nconf);
};