app2-api/modules/multimedia/multimedia.service.js
2019-08-05 20:04:29 +02:00

60 lines
1.6 KiB
JavaScript

/* global Venue */
'use strict';
const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');
const cdnHelper = require('../../helpers/cdn.helper');
const getVimeoVideoInfo = require('../../helpers/vimeo.helper');
const providerComposer = (multimedia) => {
if (multimedia.provider === 'vimeo') {
multimedia.providerInfo = getVimeoVideoInfo(multimedia.code)
} else if (multimedia.provider === 'cdn') {
multimedia.url = cdnHelper.getCDNMediaUrl(multimedia.url);
}
return multimedia;
}
const extraMethods = {
afterFetchAll: (result, params, context) => {
if (!result.count) {
return result;
}
let rows = result.rows.map(function(row) {
let result = row.toJSON();
result = Object.assign(result, result.multimediaFile, { multimediaFile: undefined })
delete result.createdAt;
delete result.updatedAt;
delete result.userId;
return providerComposer(result);
});
return {
count: result.count,
rows: rows
}
},
afterFetchOne: async (result, params, context) => {
if (!result) {
return result;
}
const multimedia = result.toJSON();
if (multimedia.provider === 'vimeo') {
multimedia.providerInfo = await providerComposer(multimedia);
}
return multimedia;
},
}
module.exports = generateService(models.Multimedia, extraMethods);