71 lines
1.6 KiB
JavaScript
Raw Normal View History

'use strict';
2018-03-24 12:08:07 +01:00
/**
* Module dependencies
*/
// Public node modules.
2018-05-04 18:27:39 +02:00
/* eslint-disable import/no-unresolved */
/* eslint-disable prefer-template */
const cloudinary = require('cloudinary').v2;
const intoStream = require('into-stream');
2018-03-24 12:08:07 +01:00
module.exports = {
provider: 'cloudinary',
name: 'Cloudinary',
2018-03-24 12:08:07 +01:00
auth: {
cloud_name: {
label: 'Cloud name',
type: 'text',
2018-03-24 12:08:07 +01:00
},
api_key: {
label: 'API Key',
type: 'text',
2018-03-24 12:08:07 +01:00
},
api_secret: {
label: 'API Secret',
type: 'password',
2019-04-27 12:09:07 +02:00
},
2018-03-24 12:08:07 +01:00
},
2019-04-27 12:09:07 +02:00
init: config => {
2018-03-24 12:08:07 +01:00
cloudinary.config({
cloud_name: config.cloud_name,
api_key: config.api_key,
2019-04-27 12:09:07 +02:00
api_secret: config.api_secret,
2018-03-24 12:08:07 +01:00
});
return {
2019-04-27 12:09:07 +02:00
upload(file) {
2018-03-24 12:08:07 +01:00
return new Promise((resolve, reject) => {
2019-04-27 12:09:07 +02:00
const upload_stream = cloudinary.uploader.upload_stream(
{ resource_type: 'auto' },
2019-04-27 12:09:07 +02:00
(err, image) => {
if (err) {
return reject(err);
}
file.public_id = image.public_id;
file.url = image.secure_url;
resolve();
},
);
2018-03-24 12:08:07 +01:00
intoStream(file.buffer).pipe(upload_stream);
2018-05-04 18:27:39 +02:00
});
2018-03-24 12:08:07 +01:00
},
2019-04-27 12:09:07 +02:00
async delete(file) {
2018-03-24 12:08:07 +01:00
try {
const response = await cloudinary.uploader.destroy(file.public_id, {
2019-04-27 12:09:07 +02:00
invalidate: true,
2018-03-24 12:08:07 +01:00
});
if (response.result !== 'ok') {
2018-03-24 12:08:07 +01:00
throw {
2019-04-27 12:09:07 +02:00
error: new Error(response.result),
2018-05-04 18:27:39 +02:00
};
2018-03-24 12:08:07 +01:00
}
} catch (error) {
throw error.error;
}
2019-04-27 12:09:07 +02:00
},
2018-03-24 12:08:07 +01:00
};
2019-04-27 12:09:07 +02:00
},
2018-03-24 12:08:07 +01:00
};