dialCodeService.js 34.49 KiB
/**
 * @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