An error occurred while loading the file. Please try again.
-
Sourav Dey authoreda325be6a
/**
* @name : dialCodeService.js
* @description :: Responsible for handle dial code service
* @author :: Anuj Gupta
*/
var async = require('async')
var path = require('path')
var _ = require('lodash')
var contentProvider = require('sb_content_provider_util')
var respUtil = require('response_util')
var LOG = require('sb_logger_util')
var configUtil = require('sb-config-util')
var messageUtils = require('./messageUtil')
var utilsService = require('../service/utilsService')
var ImageService = require('./dialCode/imageService')
var BatchImageService = require('./dialCode/batchImageService')
var dialCodeServiceHelper = require('./dialCode/dialCodeServiceHelper')
var filename = path.basename(__filename)
var dialCodeMessage = messageUtils.DIALCODE
var responseCode = messageUtils.RESPONSE_CODE
/**
* This function helps to generate dialcode
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function generateDialCodeAPI (req, response) {
var data = req.body
var rspObj = req.rspObj
if (!data.request || !data.request.dialcodes) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'generateDialCodeAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.GENERATE.MISSING_CODE
rspObj.errMsg = dialCodeMessage.GENERATE.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
if (!_.get(data, 'request.dialcodes.count') || !_.isSafeInteger(data.request.dialcodes.count)) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'generateDialCodeAPI',
'Error due to error in count input', data.request))
rspObj.errCode = dialCodeMessage.GENERATE.MISSING_COUNT
rspObj.errMsg = dialCodeMessage.GENERATE.MISSING_COUNT_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
// Transform request for Content provider
var reqData = {
request: data.request
}
var requestedCount = _.clone(_.get(data, 'request.dialcodes.count'))
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'generateDialCodeAPI',
'Request to generate the dialcode', {
body: reqData,
headers: req.headers
}))
dialCodeServiceHelper.generateDialcodes(reqData, req.headers, function (err, res) {
if (err || _.indexOf([responseCode.SUCCESS, responseCode.PARTIAL_SUCCESS], res.responseCode) === -1) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'generateDialCodeAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.GENERATE.FAILED_CODE
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.GENERATE.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
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.dialcodes &&
res.result.dialcodes.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.dialcodes, 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
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'generateDialCodeAPI',
'Return response back to user', rspObj))
if (requestedCount > configUtil.getConfig('DIALCODE_GENERATE_MAX_COUNT')) {
rspObj.responseCode = responseCode.PARTIAL_SUCCESS
return response.status(207).send(respUtil.successResponse(rspObj))
}
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function helps to get list of dialcodes
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function dialCodeListAPI (req, response) {
var data = req.body
var rspObj = req.rspObj
var qrCodeFlag = !!(data && data.request && data.request.search && data.request.search.qrCodeSpec &&
!_.isEmpty(data.request.search.qrCodeSpec))
var qrCodeConfig = {}
if (qrCodeFlag) {
var requestObj = data.request.search
qrCodeConfig = {
width: _.clone(requestObj.qrCodeSpec.width),
height: _.clone(requestObj.qrCodeSpec.height),
border: _.clone(requestObj.qrCodeSpec.border),
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
text: _.clone(requestObj.qrCodeSpec.text),
errCorrectionLevel: _.clone(requestObj.qrCodeSpec.errCorrectionLevel),
color: _.clone(requestObj.qrCodeSpec.color)
}
}
if (!data.request || !data.request.search || !data.request.search.publisher) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'dialCodeListAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.LIST.MISSING_CODE
rspObj.errMsg = dialCodeMessage.LIST.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
if (data.request && data.request.search) {
data.request.search = _.omit(data.request.search, ['qrCodeSpec'])
}
// Transform request for Content provider
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'dialCodeListAPI',
'Request to get list of dialcode', {
body: reqData,
headers: req.headers
}))
contentProvider.dialCodeList(reqData, req.headers, function (err, res) {
if (err || _.indexOf([responseCode.SUCCESS, responseCode.PARTIAL_SUCCESS], res.responseCode) === -1) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'dialCodeListAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.LIST.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.LIST.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
}, function (res, CBW) {
if (qrCodeFlag && res.result.dialcodes && res.result.dialcodes.length) {
var batchImageService = new BatchImageService(qrCodeConfig)
var channel = _.clone(req.headers['x-channel-id'])
var dialcodes = _.map(res.result.dialcodes, 'identifier')
batchImageService.createRequest(dialcodes, channel, requestObj.publisher, rspObj, function (err, processId) {
if (err) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'dialCodeListAPI',
'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
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'dialCodeListAPI',
'Return response back to user'))
return response.status(200).send(respUtil.successResponse(rspObj))
}
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
])
}
/**
* This function helps to update dialcode
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function updateDialCodeAPI (req, response) {
var data = req.body
data.dialCodeId = req.params.dialCodeId
var rspObj = req.rspObj
// Adding objectData in telemetryData object
if (rspObj.telemetryData) {
rspObj.telemetryData.object = utilsService.getObjectData(data.dialCodeId, 'dialcode', '', {})
}
if (!data.request || !data.request.dialcode || !data.dialCodeId) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'updateDialCodeAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.UPDATE.MISSING_CODE
rspObj.errMsg = dialCodeMessage.UPDATE.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
// Transform request for Ek step
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'updateDialCodeAPI',
'Request to update the dialcode', {
body: reqData,
headers: req.headers
}))
contentProvider.updateDialCode(reqData, data.dialCodeId, req.headers, function (err, res) {
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'updateDialCodeAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.UPDATE.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.UPDATE.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'updateDialCodeAPI',
'Return response back to user', rspObj))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function helps to get dialcode meta
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function getDialCodeAPI (req, response) {
281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
var data = {}
data.body = req.body
data.dialCodeId = _.get(req, 'body.request.dialcode.identifier')
var rspObj = req.rspObj
// Adding objectData in telemetryData object
if (rspObj.telemetryData) {
rspObj.telemetryData.object = utilsService.getObjectData(data.dialCodeId, 'dialcode', '', {})
}
if (!data.dialCodeId) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'getDialCodeAPI',
'Error due to required params are missing', {
dialCodeId: data.dialCodeId
}))
rspObj.errCode = dialCodeMessage.GET.MISSING_CODE
rspObj.errMsg = dialCodeMessage.GET.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'getDialCodeAPI',
'Request to get dialcode meta data', {
dialCodeId: data.dialCodeId,
qs: data.queryParams,
headers: req.headers
}))
contentProvider.getDialCode(data.dialCodeId, req.headers, function (err, res) {
// After check response, we perform other operation
console.log(err)
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'getDialCodeAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.GET.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.GET.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res, CBW) {
var qrCodeSpec = _.get(req, 'body.request.dialcode.qrCodeSpec')
if (qrCodeSpec && !_.isEmpty(qrCodeSpec)) {
var imgService = new ImageService(
{ width: qrCodeSpec.width,
height: qrCodeSpec.height,
border: qrCodeSpec.border,
text: qrCodeSpec.text,
errCorrectionLevel: qrCodeSpec.errCorrectionLevel,
color: qrCodeSpec.color
})
var dialcode = res.result.dialcode.identifier
var channel = res.result.dialcode.channel
var publisher = res.result.dialcode.publisher
imgService.getImage(dialcode, channel, publisher, undefined, undefined, true, function (err, image) {
if (err) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'getDialCodeAPI',
'Generating image error', err))
res.responseCode = responseCode.PARTIAL_SUCCESS
return response.status(207).send(respUtil.successResponse(res))
} else {
res.result.dialcode.image = image.url
CBW(null, res)
}
})
351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
} else {
CBW(null, res)
}
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'getDialCodeAPI',
'Sending response back to user'))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function helps to check content link api request data
* @param {type} data
* @returns {boolean} return response boolean value true or false
*/
function checkContentLinkRequest (data) {
if (!data.request || !data.request.content || !data.request.content.identifier || !data.request.content.dialcode) {
return false
}
var dialcodesLength = data.request.content.dialcode.length
var identifiersLength = data.request.content.identifier.length
if (dialcodesLength < 1 || identifiersLength < 1 || (dialcodesLength > 1 && identifiersLength > 1)) {
return false
} else {
return true
}
}
/**
* This function helps to link the content with dialcode
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function contentLinkDialCodeAPI (req, response) {
var data = req.body
var rspObj = req.rspObj
if (!checkContentLinkRequest(data)) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'contentLinkDialCodeAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.CONTENT_LINK.MISSING_CODE
rspObj.errMsg = dialCodeMessage.CONTENT_LINK.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
// Transform request for content provider
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'contentLinkDialCodeAPI',
'Request to link the content', {
body: reqData,
headers: req.headers
}))
contentProvider.contentLinkDialCode(reqData, req.headers, function (err, res) {
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'contentLinkDialCodeAPI',
'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.CONTENT_LINK.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.CONTENT_LINK.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'contentLinkDialCodeAPI',
'Return response back to user', rspObj))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function used to get the status of the batch dialcodes creation status with process id
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function getProcessIdStatusAPI (req, response) {
var data = {}
data.body = req.body
data.processId = req.params.processId
var rspObj = req.rspObj
// Adding objectData in telemetryData object
if (rspObj.telemetryData) {
rspObj.telemetryData.object = utilsService.getObjectData(data.processId, 'dialcode', '', {})
}
if (!data.processId) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'getDialCodeAPI',
'Error due to required params are missing', {
processId: data.processId
}))
rspObj.errCode = dialCodeMessage.PROCESS.MISSING_CODE
rspObj.errMsg = dialCodeMessage.PROCESS.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
var batchImageService = new BatchImageService()
batchImageService.getStatus(rspObj, req.params.processId).then(process => {
return response.status(process.code).send(process.data)
})
.catch(err => {
var error = JSON.parse(err.message)
return response.status(error.code).send(error.data)
})
}
/**
* This function helps to search dialcode
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function searchDialCodeAPI (req, response) {
var data = req.body
var rspObj = req.rspObj
if (!data.request || !data.request.search) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'searchDialCodeAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.SEARCH.MISSING_CODE
rspObj.errMsg = dialCodeMessage.SEARCH.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
// Transform request for Content provider
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'searchDialCodeAPI', 'Request to search', {
body: reqData,
headers: req.headers
}))
contentProvider.searchDialCode(reqData, req.headers, function (err, res) {
if (err || _.indexOf([responseCode.SUCCESS, responseCode.PARTIAL_SUCCESS], res.responseCode) === -1) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'searchDialCodeAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.SEARCH.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.SEARCH.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'searchDialCodeAPI',
'Return response back to user', rspObj))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function helps to publish dialcode
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function publishDialCodeAPI (req, response) {
var data = req.body
var rspObj = req.rspObj
data.dialCodeId = req.params.dialCodeId
// Adding objectData in telemetryData object
if (rspObj.telemetryData) {
rspObj.telemetryData.object = utilsService.getObjectData(data.dialCodeId, 'dialcode', '', {})
}
if (!data.request || !data.dialCodeId) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'publishDialCodeAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.PUBLISH.MISSING_CODE
rspObj.errMsg = dialCodeMessage.PUBLISH.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
// Transform request for Content provider
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'publishDialCodeAPI',
'Request to publish the dialcode', {
561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
body: reqData,
headers: req.headers
}))
contentProvider.publishDialCode(reqData, data.dialCodeId, req.headers, function (err, res) {
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'publishDialCodeAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.PUBLISH.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.PUBLISH.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'publishDialCodeAPI',
'Return response back to user', rspObj))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function helps to create publisher
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function createPublisherAPI (req, response) {
var data = req.body
var rspObj = req.rspObj
if (!data.request || !data.request.publisher || !data.request.publisher.identifier || !data.request.publisher.name) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'createPublisherAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.CREATE_PUBLISHER.MISSING_CODE
rspObj.errMsg = dialCodeMessage.CREATE_PUBLISHER.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
// Transform request for Content provider
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'createPublisherAPI',
'Request to create publisher', {
body: reqData,
headers: req.headers
}))
contentProvider.createPublisher(reqData, req.headers, function (err, res) {
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'createPublisherAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.CREATE_PUBLISHER.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.CREATE_PUBLISHER.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
})
},
function (res) {
rspObj.result = res.result
// Adding objectData in telemetryData object
if (rspObj.telemetryData) {
rspObj.telemetryData.object = utilsService.getObjectData(data.dialCodeId, 'dialcode', '', {})
}
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'createPublisherAPI',
'Return response back to user', rspObj))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
/**
* This function helps to update publisher
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function updatePublisherAPI (req, response) {
var data = req.body
data.publisherId = req.params.publisherId
var rspObj = req.rspObj
if (!data.request || !data.request.publisher || !data.publisherId) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'updatePublisherAPI',
'Error due to required params are missing', data.request))
rspObj.errCode = dialCodeMessage.UPDATE_PUBLISHER.MISSING_CODE
rspObj.errMsg = dialCodeMessage.UPDATE_PUBLISHER.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
// Transform request for Content Provider
var reqData = {
request: data.request
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'updatePublisherAPI',
'Request to update the publisher', {
body: reqData,
headers: req.headers
}))
contentProvider.updatePublisher(reqData, data.publisherId, req.headers, function (err, res) {
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'updatePublisherAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.UPDATE_PUBLISHER.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.UPDATE_PUBLISHER.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'updatePublisherAPI',
'Return response back to user', rspObj))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
/**
* This function helps to get publisher metadata
* @param {type} req
* @param {type} response
* @returns {object} return response object with http status
*/
function getPublisherAPI (req, response) {
var data = {}
data.publisherId = req.params.publisherId
var rspObj = req.rspObj
if (!data.publisherId) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'getPublisherAPI',
'Error due to required params are missing', {
dialCodeId: data.dialCodeId
}))
rspObj.errCode = dialCodeMessage.GET.MISSING_CODE
rspObj.errMsg = dialCodeMessage.GET.MISSING_MESSAGE
rspObj.responseCode = responseCode.CLIENT_ERROR
return response.status(400).send(respUtil.errorResponse(rspObj))
}
async.waterfall([
function (CBW) {
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'getPublisherAPI',
'Request to get publisher meta data', {
publisherId: data.publisherId,
qs: data.queryParams,
headers: req.headers
}))
contentProvider.getPublisher(data.publisherId, req.headers, function (err, res) {
// After check response, we perform other operation
if (err || res.responseCode !== responseCode.SUCCESS) {
LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'getPublisherAPI', 'Getting error', res))
rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.GET.FAILED_CODE
rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.GET.FAILED_MESSAGE
rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.SERVER_ERROR
var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
rspObj = utilsService.getErrorResponse(rspObj, res)
return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
} else {
CBW(null, res)
}
})
},
function (res) {
rspObj.result = res.result
LOG.info(utilsService.getLoggerData(rspObj, 'INFO', filename, 'getPublisherAPI',
'Sending response back to user'))
return response.status(200).send(respUtil.successResponse(rspObj))
}
])
}
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))
771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
} 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
module.exports.getDialCodeAPI = getDialCodeAPI
841842843844845846847848849850851
module.exports.contentLinkDialCodeAPI = contentLinkDialCodeAPI
module.exports.getProcessIdStatusAPI = getProcessIdStatusAPI
module.exports.searchDialCodeAPI = searchDialCodeAPI
module.exports.publishDialCodeAPI = publishDialCodeAPI
module.exports.createPublisherAPI = createPublisherAPI
module.exports.createPublisherAPI = createPublisherAPI
module.exports.getPublisherAPI = getPublisherAPI
module.exports.updatePublisherAPI = updatePublisherAPI
module.exports.reserveDialCode = reserveDialCode
module.exports.releaseDialCode = releaseDialCode