updated the publish logic

This commit is contained in:
bill bittner 2018-07-27 11:05:10 -07:00
parent 27eddbe42e
commit 0037addcda
2 changed files with 34 additions and 16 deletions

View file

@ -1,8 +1,7 @@
const logger = require('winston');
const { details, publishing } = require('@config/siteConfig');
const createBasicPublishParams = (filePath, name, title, description, license, nsfw, thumbnail) => {
logger.debug(`Creating Publish Parameters`);
const createPublishParams = (filePath, name, title, description, license, nsfw, thumbnail, channelName, channelClaimId) => {
// provide defaults for title
if (title === null || title.trim() === '') {
title = name;
@ -15,7 +14,7 @@ const createBasicPublishParams = (filePath, name, title, description, license, n
if (license === null || license.trim() === '') {
license = ' '; // default to empty string
}
// create the publish params
// create the basic publish params
const publishParams = {
name,
file_path: filePath,
@ -34,8 +33,15 @@ const createBasicPublishParams = (filePath, name, title, description, license, n
if (thumbnail) {
publishParams['metadata']['thumbnail'] = thumbnail;
}
// add channel details if publishing to a channel
if (channelName && channelClaimId) {
publishParams['channel_name'] = channelName;
publishParams['channel_id'] = channelClaimId;
}
// log params
logger.debug('publish params:', publishParams);
// return
return publishParams;
};
module.exports = createBasicPublishParams;
module.exports = createPublishParams;

View file

@ -9,12 +9,14 @@ const { handleErrorResponse } = require('../../../utils/errorHandlers.js');
const checkClaimAvailability = require('../availability/checkClaimAvailability.js');
const publish = require('./publish.js');
const createBasicPublishParams = require('./createBasicPublishParams.js');
const createPublishParams = require('./createPublishParams.js');
const createThumbnailPublishParams = require('./createThumbnailPublishParams.js');
const parsePublishApiRequestBody = require('./parsePublishApiRequestBody.js');
const parsePublishApiRequestFiles = require('./parsePublishApiRequestFiles.js');
const authenticateUser = require('./authentication.js');
const CLAIM_TAKEN = 'CLAIM_TAKEN';
/*
route to publish a claim through the daemon
@ -50,18 +52,22 @@ const claimPublish = ({ body, files, headers, ip, originalUrl, user, tor }, res)
return res.status(400).json({success: false, message: error.message});
}
// check channel authorization
Promise
.all([
authenticateUser(channelName, channelId, channelPassword, user),
checkClaimAvailability(name),
createBasicPublishParams(filePath, name, title, description, license, nsfw, thumbnail),
createThumbnailPublishParams(thumbnailFilePath, name, license, nsfw),
])
.then(([{channelName, channelClaimId}, validatedClaimName, publishParams, thumbnailPublishParams]) => {
authenticateUser(channelName, channelId, channelPassword, user)
.then(({ channelName, channelClaimId }) => {
// add channel details to the publish params
if (channelName && channelClaimId) {
publishParams['channel_name'] = channelName;
publishParams['channel_id'] = channelClaimId;
return Promise.all([
checkClaimAvailability(name),
createPublishParams(filePath, name, title, description, license, nsfw, thumbnail, channelName, channelClaimId),
createThumbnailPublishParams(thumbnailFilePath, name, license, nsfw),
])
})
.then(([ claimAvailable, publishParams, thumbnailPublishParams ]) => {
if (!claimAvailabile) {
throw {
name: CLAIM_TAKEN,
message: 'That claim name is already taken'
};
}
// publish the thumbnail, if one exists
if (thumbnailPublishParams) {
@ -87,6 +93,12 @@ const claimPublish = ({ body, files, headers, ip, originalUrl, user, tor }, res)
sendGATimingEvent('end-to-end', 'publish', fileType, gaStartTime, Date.now());
})
.catch(error => {
if (error.name = CLAIM_TAKEN) {
res.status(400).json({
success: false,
message: error.message,
});
}
handleErrorResponse(originalUrl, ip, error, res);
});
};