.
This commit is contained in:
parent
97ee184ec5
commit
4aabf4258a
@ -24,5 +24,11 @@ module.exports = {
|
|||||||
paginate: {
|
paginate: {
|
||||||
limit: 10,
|
limit: 10,
|
||||||
maxLimit: 50
|
maxLimit: 50
|
||||||
|
},
|
||||||
|
|
||||||
|
vimeo: {
|
||||||
|
CLIENT_ID: '9581f2d0ed211dc1e31b5c825117dc1f00d77ba0',
|
||||||
|
CLIENT_SECRET: '3kf0hQ63OXSPm7z2X1qyOV4iH57Xha0cyRXn0VJneq8zHbWKjfB1/9H8KcgBgzgkzw0Y9x/xFLUAauuHLEkqHxLBw8QueanCgIZev1L5xoksrKuKX7gMvErqqP+uFNnA',
|
||||||
|
ACCESS_TOKEN: '2843aed2064f8148d74074dff7807d92'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,5 +32,11 @@ module.exports = {
|
|||||||
paginate: {
|
paginate: {
|
||||||
limit: 10,
|
limit: 10,
|
||||||
maxLimit: 50
|
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 routes = require('express').Router();
|
||||||
|
|
||||||
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
|
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
|
||||||
|
const { cacheSuccesses } = require('../../middlewares/cache');
|
||||||
|
|
||||||
//const SchemaValidator = require('../../middlewares/schemaValidator');
|
//const SchemaValidator = require('../../middlewares/schemaValidator');
|
||||||
|
|
||||||
const PaginateMiddleware = require('../../middlewares/paginate');
|
const PaginateMiddleware = require('../../middlewares/paginate');
|
||||||
@ -11,23 +13,23 @@ const SortMiddleware = require('../../middlewares/sort');
|
|||||||
const multimediaController = require('./multimedia.controller');
|
const multimediaController = require('./multimedia.controller');
|
||||||
|
|
||||||
|
|
||||||
routes.get('/multimedias',
|
routes.get('/multimedias', cacheSuccesses,
|
||||||
PaginateMiddleware.middleware(),
|
PaginateMiddleware.middleware(),
|
||||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||||
multimediaController.find
|
multimediaController.find({})
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.get('/multimedias/:id',
|
routes.get('/multimedias/:id', cacheSuccesses,
|
||||||
//PaginateMiddleware.middleware(),
|
//PaginateMiddleware.middleware(),
|
||||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||||
multimediaController.findOne
|
multimediaController.findOne({})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
routes.get('/multimedias/:entityId',
|
routes.get('/multimedias/:entityId',
|
||||||
//PaginateMiddleware.middleware(),
|
//PaginateMiddleware.middleware(),
|
||||||
//SortMiddleware.middleware({ default: "init_available_date" }),
|
//SortMiddleware.middleware({ default: "init_available_date" }),
|
||||||
multimediaController.find
|
multimediaController.find({})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,27 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
||||||
const models = require('../../core/models');
|
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"
|
"nodemon": "^1.18.9"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"apicache": "^1.4.0",
|
||||||
"args-list": "^0.3.3",
|
"args-list": "^0.3.3",
|
||||||
"async": "^2.6.2",
|
"async": "^2.6.2",
|
||||||
"bcrypt": "^3.0.6",
|
"bcrypt": "^3.0.6",
|
||||||
@ -51,8 +52,10 @@
|
|||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
"pino": "^4.7.1",
|
"pino": "^4.7.1",
|
||||||
"rand-token": "^0.4.0",
|
"rand-token": "^0.4.0",
|
||||||
|
"redis": "^2.8.0",
|
||||||
"response-time": "^2.3.2",
|
"response-time": "^2.3.2",
|
||||||
"sequelize": "^5.3.5",
|
"sequelize": "^5.3.5",
|
||||||
|
"vimeo": "^2.1.1",
|
||||||
"vm": "^0.1.0",
|
"vm": "^0.1.0",
|
||||||
"winston": "^3.2.1"
|
"winston": "^3.2.1"
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user