.
This commit is contained in:
parent
97ee184ec5
commit
4aabf4258a
@ -24,5 +24,11 @@ module.exports = {
|
||||
paginate: {
|
||||
limit: 10,
|
||||
maxLimit: 50
|
||||
},
|
||||
|
||||
vimeo: {
|
||||
CLIENT_ID: '9581f2d0ed211dc1e31b5c825117dc1f00d77ba0',
|
||||
CLIENT_SECRET: '3kf0hQ63OXSPm7z2X1qyOV4iH57Xha0cyRXn0VJneq8zHbWKjfB1/9H8KcgBgzgkzw0Y9x/xFLUAauuHLEkqHxLBw8QueanCgIZev1L5xoksrKuKX7gMvErqqP+uFNnA',
|
||||
ACCESS_TOKEN: '2843aed2064f8148d74074dff7807d92'
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,5 +32,11 @@ module.exports = {
|
||||
paginate: {
|
||||
limit: 10,
|
||||
maxLimit: 50
|
||||
}
|
||||
},
|
||||
|
||||
vimeo: {
|
||||
CLIENT_ID: '9581f2d0ed211dc1e31b5c825117dc1f00d77ba0',
|
||||
CLIENT_SECRET: '3kf0hQ63OXSPm7z2X1qyOV4iH57Xha0cyRXn0VJneq8zHbWKjfB1/9H8KcgBgzgkzw0Y9x/xFLUAauuHLEkqHxLBw8QueanCgIZev1L5xoksrKuKX7gMvErqqP+uFNnA',
|
||||
ACCESS_TOKEN: '2843aed2064f8148d74074dff7807d92'
|
||||
}
|
||||
}
|
||||
|
||||
22
helpers/vimeo.helper.js
Normal file
22
helpers/vimeo.helper.js
Normal file
@ -0,0 +1,22 @@
|
||||
const config = require('../config');
|
||||
const Vimeo = require('vimeo').Vimeo;
|
||||
const client = new Vimeo(config.vimeo.CLIENT_ID, config.vimeo.CLIENT_SECRET, config.vimeo.ACCESS_TOKEN);
|
||||
|
||||
function getVimeoVideoInfo(videoId) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
client.request({
|
||||
method: 'GET',
|
||||
path: '/videos/' + videoId
|
||||
}, function (error, body, status_code, headers) {
|
||||
if (error) {
|
||||
console.log(error);
|
||||
resolve({})
|
||||
} else {
|
||||
resolve(body);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
module.exports = getVimeoVideoInfo;
|
||||
20
middlewares/cache.js
Normal file
20
middlewares/cache.js
Normal file
@ -0,0 +1,20 @@
|
||||
const apicache = require('apicache');
|
||||
const redis = require('redis');
|
||||
|
||||
let cacheWithRedis = apicache
|
||||
.options({
|
||||
debug: true,
|
||||
defaultDuration: '1 hour',
|
||||
redisClient: redis.createClient()
|
||||
})
|
||||
.middleware;
|
||||
|
||||
// higher-order function returns false for responses of other status codes (e.g. 403, 404, 500, etc)
|
||||
const onlyStatus200 = (req, res) => res.statusCode === 200
|
||||
|
||||
const cacheSuccesses = cacheWithRedis('1 hour', onlyStatus200);
|
||||
|
||||
module.exports = {
|
||||
cacheSuccesses,
|
||||
}
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
const routes = require('express').Router();
|
||||
|
||||
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
|
||||
const { cacheSuccesses } = require('../../middlewares/cache');
|
||||
|
||||
//const SchemaValidator = require('../../middlewares/schemaValidator');
|
||||
|
||||
const PaginateMiddleware = require('../../middlewares/paginate');
|
||||
@ -11,23 +13,23 @@ const SortMiddleware = require('../../middlewares/sort');
|
||||
const multimediaController = require('./multimedia.controller');
|
||||
|
||||
|
||||
routes.get('/multimedias',
|
||||
routes.get('/multimedias', cacheSuccesses,
|
||||
PaginateMiddleware.middleware(),
|
||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||
multimediaController.find
|
||||
multimediaController.find({})
|
||||
);
|
||||
|
||||
routes.get('/multimedias/:id',
|
||||
routes.get('/multimedias/:id', cacheSuccesses,
|
||||
//PaginateMiddleware.middleware(),
|
||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||
multimediaController.findOne
|
||||
multimediaController.findOne({})
|
||||
);
|
||||
|
||||
|
||||
routes.get('/multimedias/:entityId',
|
||||
//PaginateMiddleware.middleware(),
|
||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||
multimediaController.find
|
||||
multimediaController.find({})
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -4,7 +4,27 @@
|
||||
const _ = require('lodash');
|
||||
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
||||
const models = require('../../core/models');
|
||||
const getVimeoVideoInfo = require('../../helpers/vimeo.helper');
|
||||
|
||||
const extraMethods = {};
|
||||
const providerComposer = (multimedia) => {
|
||||
return getVimeoVideoInfo(multimedia.code)
|
||||
}
|
||||
|
||||
module.exports = generateService(models.Multimedia, extraMethods);
|
||||
const extraMethods = {
|
||||
afterFetchOne: async (result, params, context) => {
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
||||
const multimedia = result.toJSON();
|
||||
console.log(multimedia);
|
||||
|
||||
if (multimedia.provider === 'vimeo') {
|
||||
multimedia.providerInfo = await providerComposer(multimedia);
|
||||
}
|
||||
return multimedia;
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
module.exports = generateService(models.MultimediaFile, extraMethods);
|
||||
@ -20,6 +20,7 @@
|
||||
"nodemon": "^1.18.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"apicache": "^1.4.0",
|
||||
"args-list": "^0.3.3",
|
||||
"async": "^2.6.2",
|
||||
"bcrypt": "^3.0.6",
|
||||
@ -51,8 +52,10 @@
|
||||
"path": "^0.12.7",
|
||||
"pino": "^4.7.1",
|
||||
"rand-token": "^0.4.0",
|
||||
"redis": "^2.8.0",
|
||||
"response-time": "^2.3.2",
|
||||
"sequelize": "^5.3.5",
|
||||
"vimeo": "^2.1.1",
|
||||
"vm": "^0.1.0",
|
||||
"winston": "^3.2.1"
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user