diff --git a/src/config/contentProviderApiConfig.json b/src/config/contentProviderApiConfig.json index fc0f5f93eb1cdcbc830ae63f082cadd927e0a6de..6e0fd1476906511dba4a4c2a0d59b126c12dd5ef 100644 --- a/src/config/contentProviderApiConfig.json +++ b/src/config/contentProviderApiConfig.json @@ -36,6 +36,8 @@ "GET_PUBLISHER_URI": "/dialcode/v3/publisher/read", "UPDATE_PUBLISHER_URI": "/dialcode/v3/publisher/update", "UPDATE_COLLABORATOR": "/content/v1/collaborator/update", + "RESERVE_DIALCODE": "/content/v3/dialcode/reserve", + "RELEASE_DIALCODE": "/content/v3/dialcode/release", "CHANNEL_URI": "/channel/v3/read", "CHANNEL_LIST_URI": "/channel/v3/list", diff --git a/src/libs b/src/libs index 2c2c0a2ac5e131eec1d470ac144cbd4643992644..7a6df7aee074c64ee2400bfb0b051063155e4658 160000 --- a/src/libs +++ b/src/libs @@ -1 +1 @@ -Subproject commit 2c2c0a2ac5e131eec1d470ac144cbd4643992644 +Subproject commit 7a6df7aee074c64ee2400bfb0b051063155e4658 diff --git a/src/middlewares/proxy.middleware.js b/src/middlewares/proxy.middleware.js index 7e9987d4e44a01933fd1a36abeeb0d38f12dd893..26fb4e9208565a1f1b3eedba53ca4b0bd59a2693 100644 --- a/src/middlewares/proxy.middleware.js +++ b/src/middlewares/proxy.middleware.js @@ -1,6 +1,7 @@ var proxy = require('express-http-proxy') var contentService = require('../service/contentService') var collaboratorService = require('../service/collaboratorService') +var dialCodeService = require('../service/dialCodeService') var requestMiddleware = require('../middlewares/request.middleware') var configUtil = require('sb-config-util') @@ -301,4 +302,24 @@ module.exports = function (app) { requestMiddleware.apiAccessForCreatorUser, collaboratorService.updateCollaborators ) + + app + .route( + '/action' + configUtil.getConfig('RESERVE_DIALCODE') + '/:contentId' + ) + .post( + requestMiddleware.createAndValidateRequestBody, + requestMiddleware.validateToken, + dialCodeService.reserveDialCode + ) + + app + .route( + '/action' + configUtil.getConfig('RELEASE_DIALCODE') + '/:contentId' + ) + .patch( + requestMiddleware.createAndValidateRequestBody, + requestMiddleware.validateToken, + dialCodeService.releaseDialCode + ) } diff --git a/src/routes/dialCodeRoutes.js b/src/routes/dialCodeRoutes.js index 23959bd1e6da5dcb06745a66d5d07bd92400c3f9..ada619c501688894e09dfe5c696e3def8611ce89 100644 --- a/src/routes/dialCodeRoutes.js +++ b/src/routes/dialCodeRoutes.js @@ -52,4 +52,12 @@ module.exports = function (app) { app.route(BASE_URL + '/process/status/:processId') .get(requestMiddleware.createAndValidateRequestBody, dialCodeService.getProcessIdStatusAPI) + + app.route(BASE_URL + '/reserve/:contentId') + .post(requestMiddleware.createAndValidateRequestBody, requestMiddleware.validateToken, + dialCodeService.reserveDialCode) + + app.route(BASE_URL + '/release/:contentId') + .patch(requestMiddleware.createAndValidateRequestBody, requestMiddleware.validateToken, + dialCodeService.releaseDialCode) } diff --git a/src/service/dialCodeService.js b/src/service/dialCodeService.js index 14e21eba8cfc16958c3db5af5ce75f070fbfe9cb..5454894ca44f1cfc067d156516efd2d29eb0ab7d 100644 --- a/src/service/dialCodeService.js +++ b/src/service/dialCodeService.js @@ -754,6 +754,86 @@ function getPublisherAPI (req, response) { ]) } +function reserveDialCode (req, response) { + var data = req.body + var rspObj = req.rspObj + + async.waterfall([ + + function (CBW) { + contentProvider.reserveDialcode(req.params.contentId, data, req.headers, function (err, res) { + if (err || res.responseCode !== responseCode.SUCCESS) { + rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.RELEASE.FAILED_CODE + rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.RELEASE.FAILED_MESSAGE + rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.CLIENT_ERROR + var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500 + return response.status(httpStatus).send(respUtil.errorResponse(rspObj)) + } else { + CBW(null, res) + } + }) + }, function (res, CBW) { + var requestObj = data && data.request && data.request.dialcodes ? data.request.dialcodes : {} + if (requestObj.qrCodeSpec && !_.isEmpty(requestObj.qrCodeSpec) && res.result.reservedDialcodes && + res.result.reservedDialcodes.length) { + var batchImageService = new BatchImageService({ + width: requestObj.qrCodeSpec.width, + height: requestObj.qrCodeSpec.height, + border: requestObj.qrCodeSpec.border, + text: requestObj.qrCodeSpec.text, + errCorrectionLevel: requestObj.qrCodeSpec.errCorrectionLevel, + color: requestObj.qrCodeSpec.color + }) + var channel = _.clone(req.headers['x-channel-id']) + batchImageService.createRequest(res.result.reservedDialcodes, channel, requestObj.publisher, rspObj, + function (err, processId) { + if (err) { + LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'generateDialCodeAPI', + 'Error while creating request to child process for images creation', err)) + res.responseCode = responseCode.PARTIAL_SUCCESS + return response.status(207).send(respUtil.successResponse(res)) + } else { + res.result.processId = processId + CBW(null, res) + } + }) + } else { + CBW(null, res) + } + }, + function (res) { + rspObj.result = res.result + return response.status(200).send(respUtil.successResponse(rspObj)) + } + ]) +} + +function releaseDialCode (req, response) { + var data = req.body + var rspObj = req.rspObj + + async.waterfall([ + + function (CBW) { + contentProvider.releaseDialcode(req.params.contentId, data, req.headers, function (err, res) { + if (err || res.responseCode !== responseCode.SUCCESS) { + rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.RELEASE.FAILED_CODE + rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.RELEASE.FAILED_MESSAGE + rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.CLIENT_ERROR + var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500 + return response.status(httpStatus).send(respUtil.errorResponse(rspObj)) + } else { + CBW(null, res) + } + }) + }, + function (res) { + rspObj.result = res.result + return response.status(200).send(respUtil.successResponse(rspObj)) + } + ]) +} + module.exports.generateDialCodeAPI = generateDialCodeAPI module.exports.dialCodeListAPI = dialCodeListAPI module.exports.updateDialCodeAPI = updateDialCodeAPI @@ -766,3 +846,5 @@ module.exports.createPublisherAPI = createPublisherAPI module.exports.createPublisherAPI = createPublisherAPI module.exports.getPublisherAPI = getPublisherAPI module.exports.updatePublisherAPI = updatePublisherAPI +module.exports.reserveDialCode = reserveDialCode +module.exports.releaseDialCode = releaseDialCode diff --git a/src/service/messageUtil.js b/src/service/messageUtil.js index a7ff0972adcd41a9d05ac9816294bd93db08a4ba..57c5582734dfcb066e8a432784c5f764f7016873 100644 --- a/src/service/messageUtil.js +++ b/src/service/messageUtil.js @@ -554,6 +554,11 @@ exports.DIALCODE = { MISSING_MESSAGE: 'Required fields for get publisher are missing', FAILED_CODE: 'ERR_GET_PUBLISHER_DIALCODE_FAILED', FAILED_MESSAGE: 'GET publisher failed' + }, + + RELEASE: { + FAILED_CODE: 'ERR_RELEASING_DIALCODE_FAILED', + FAILED_MESSAGE: 'Unable to release the dial code' } }