updated the publish logic
This commit is contained in:
parent
27eddbe42e
commit
0037addcda
2 changed files with 34 additions and 16 deletions
|
@ -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;
|
|
@ -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);
|
||||
});
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue