Add support for adding attachment storage types in plugins
parent
5244cce31c
commit
0f61966d4e
|
@ -16,6 +16,8 @@ const localAttachmentDir = config.attachmentDir || `${__dirname}/../../attachmen
|
||||||
|
|
||||||
const attachmentSavePromises = {};
|
const attachmentSavePromises = {};
|
||||||
|
|
||||||
|
const attachmentStorageTypes = {};
|
||||||
|
|
||||||
function getErrorResult(msg = null) {
|
function getErrorResult(msg = null) {
|
||||||
return {
|
return {
|
||||||
url: `Attachment could not be saved${msg ? ': ' + msg : ''}`,
|
url: `Attachment could not be saved${msg ? ': ' + msg : ''}`,
|
||||||
|
@ -171,10 +173,8 @@ function saveAttachment(attachment) {
|
||||||
return attachmentSavePromises[attachment.id];
|
return attachmentSavePromises[attachment.id];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.attachmentStorage === 'local') {
|
if (attachmentStorageTypes[config.attachmentStorage]) {
|
||||||
attachmentSavePromises[attachment.id] = saveLocalAttachment(attachment);
|
attachmentSavePromises[attachment.id] = Promise.resolve(attachmentStorageTypes[config.attachmentStorage](attachment));
|
||||||
} else if (config.attachmentStorage === 'discord') {
|
|
||||||
attachmentSavePromises[attachment.id] = saveDiscordAttachment(attachment);
|
|
||||||
} else {
|
} else {
|
||||||
throw new Error(`Unknown attachment storage option: ${config.attachmentStorage}`);
|
throw new Error(`Unknown attachment storage option: ${config.attachmentStorage}`);
|
||||||
}
|
}
|
||||||
|
@ -186,8 +186,16 @@ function saveAttachment(attachment) {
|
||||||
return attachmentSavePromises[attachment.id];
|
return attachmentSavePromises[attachment.id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addStorageType(name, handler) {
|
||||||
|
attachmentStorageTypes[name] = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
attachmentStorageTypes.local = saveLocalAttachment;
|
||||||
|
attachmentStorageTypes.discord = saveDiscordAttachment;
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getLocalAttachmentPath,
|
getLocalAttachmentPath,
|
||||||
attachmentToFile,
|
attachmentToFile,
|
||||||
saveAttachment
|
saveAttachment,
|
||||||
|
addStorageType
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@ const { createCommandManager } = require('./commands');
|
||||||
const blocked = require('./data/blocked');
|
const blocked = require('./data/blocked');
|
||||||
const threads = require('./data/threads');
|
const threads = require('./data/threads');
|
||||||
const updates = require('./data/updates');
|
const updates = require('./data/updates');
|
||||||
|
const attachments = require('./data/attachments');
|
||||||
|
|
||||||
const reply = require('./modules/reply');
|
const reply = require('./modules/reply');
|
||||||
const close = require('./modules/close');
|
const close = require('./modules/close');
|
||||||
|
@ -265,7 +266,13 @@ function initPlugins() {
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins.forEach(pluginFn => {
|
plugins.forEach(pluginFn => {
|
||||||
pluginFn({ bot, knex, config, commands });
|
pluginFn({
|
||||||
|
bot,
|
||||||
|
knex,
|
||||||
|
config,
|
||||||
|
commands,
|
||||||
|
attachments,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(`Loaded ${plugins.length} plugins (${builtInPlugins.length} built-in plugins, ${plugins.length - builtInPlugins.length} external plugins)`);
|
console.log(`Loaded ${plugins.length} plugins (${builtInPlugins.length} built-in plugins, ${plugins.length - builtInPlugins.length} external plugins)`);
|
||||||
|
|
Loading…
Reference in New Issue