This commit is contained in:
David Arranz 2019-07-24 16:50:41 +02:00
parent cd5d39bc97
commit 97ee184ec5
8 changed files with 84 additions and 14 deletions

View File

@ -17,6 +17,10 @@ module.exports = {
port: process.env.PORT || 18888
},
cdn: {
hostname: "https://cdnapp2.loquedeverdadimporta.org",
},
paginate: {
limit: 10,
maxLimit: 50

View File

@ -15,13 +15,22 @@ module.exports = {
*/
},
session: {
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
token_expires_in: '365d'
},
session: {
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
token_expires_in: '365d'
},
server: {
hostname: process.env.HOSTNAME || '127.0.0.1',
port: process.env.PORT || 18888
}
server: {
hostname: process.env.HOSTNAME || '127.0.0.1',
port: process.env.PORT || 18888
},
cdn: {
hostname: "https://cdnapp2.loquedeverdadimporta.org",
},
paginate: {
limit: 10,
maxLimit: 50
}
}

31
helpers/cdn.helper.js Normal file
View File

@ -0,0 +1,31 @@
const config = require('../config');
const assetsUrl = config.cdn.hostname;
const CDN_PATHS = {
BLOG: "blog/",
CITIES: "cities/",
PROFILE: "profile/",
SPEAKERS: "speakers/",
WALLPAPERS: "wallpapers/"
};
const getCDNMediaUrl = (mediaUri) => {
if (mediaUri) {
const pathParsed = mediaUri.indexOf("media") == 0 ? mediaUri.substr("media/".length, mediaUri.length) : mediaUri;
return encodeURI(encodeURI(`${assetsUrl}/${pathParsed}`));
}
else {
return encodeURI(dummyMedia);
}
}
const getCDNCityMediaUrl = (cityName) => encodeURI(`${assetsUrl}/${CDN_PATHS.CITIES}/${cityName}.jpg`);
module.exports = {
getCDNCityMediaUrl,
getCDNMediaUrl
}

View File

@ -16,7 +16,7 @@ routes.get('/posts', isLoggedUser,
}),
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "date" }),
blogController.find);
blogController.find());
routes.post('/posts', isAdministratorUser, blogController.create);
@ -26,7 +26,8 @@ routes.get('/posts/:id', isLoggedUser,
}),
//PaginateMiddleware.middleware(),
//SortMiddleware.middleware({ default: "date" }),
blogController.findOne);
blogController.findOne()
);
routes.put('/posts/:id', isAdministratorUser, blogController.update);

View File

@ -54,7 +54,7 @@ module.exports = function (sequelize, DataTypes) {
Comment.associate = function (models) {
Comment.User = Comment.belongsTo(models.User, { foreignKey: 'userId', constraints: false });
Comment.User = Comment.belongsTo(models.User, { foreignKey: 'userId', constraints: false, as: 'user' });
//Comment.Conference = Comment.belongsTo(models.Conference, { foreignKey: 'conferenceId', constraints: false });
//Comment.Post = Comment.belongsTo(models.Post, { foreignKey: 'postId', constraints: false });
//Comment.Speaker = Comment.belongsTo(models.Speaker, { foreignKey: 'speakerId', constraints: false });

View File

@ -6,6 +6,7 @@ const moment = require('moment');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const Sequelize = require('sequelize');
const models = require('../../core/models');
const cdnHelper = require('../../helpers/cdn.helper');
const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
@ -17,6 +18,7 @@ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
createdAt: undefined,
updatedAt: undefined,
userId: undefined,
url: (multimedia.MultimediaFile.provider === 'cdn') ? cdnHelper.getCDNMediaUrl(multimedia.MultimediaFile.url) : multimedia.MultimediaFile.url,
}));
const speakerComposer = (speaker, context) => {
@ -31,7 +33,8 @@ const eventComposer = (event, context) => {
if (context.scopes.includes('includeVenue')) {
delete event.venue.updatedAt;
delete event.venue.createdAt;
delete event.venue.createdAt;
event.venue.image_url = cdnHelper.getCDNCityMediaUrl(event.venue.city);
};
let multimedias = []

View File

@ -141,6 +141,10 @@ module.exports = function (sequelize, DataTypes) {
model: sequelize.models.Comment,
as: 'comments',
required: false,
include: [{
model: sequelize.models.User,
as: 'user',
}]
}]
}
});

View File

@ -5,6 +5,7 @@ const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const Sequelize = require('sequelize');
const models = require('../../core/models');
const cdnHelper = require('../../helpers/cdn.helper');
const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
@ -16,6 +17,7 @@ const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({
createdAt: undefined,
updatedAt: undefined,
userId: undefined,
url: (multimedia.MultimediaFile.provider === 'cdn') ? cdnHelper.getCDNMediaUrl(multimedia.MultimediaFile.url) : multimedia.MultimediaFile.url,
}));
const valuesComposer = (values) => values.map(value => ({
@ -23,6 +25,16 @@ const valuesComposer = (values) => values.map(value => ({
name: value.name,
}));
const commentsComposer = (comments) => comments.map(comment => ({
...comment,
userId: undefined,
user: {
...comment.user,
profile_picture: cdnHelper.getCDNMediaUrl(comment.user.profile_picture)
}
}))
const socialNetworksComposer = (speaker, context) => {
return {
@ -44,9 +56,14 @@ const socialNetworksComposer = (speaker, context) => {
};
const speakerComposer = (speaker, context) => {
let multimedias = []
let multimedias = [];
if (context.scopes.includes('includeMultimedias')) {
multimedias = multimediaComposer(speaker.multimedias)
multimedias = multimediaComposer(speaker.multimedias);
};
let comments = [];
if (context.scopes.includes('includeComments')) {
comments = commentsComposer(speaker.comments);
};
speaker.typename = speaker.type.name;
@ -60,6 +77,7 @@ const speakerComposer = (speaker, context) => {
speaker,
rrss,
{ multimedias: multimedias },
{ comments: comments },
)
};