UNPKG

@ckstack/ck-push-sender

Version:

push sender server module

161 lines (160 loc) 9.47 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const aws_sdk_1 = __importDefault(require("aws-sdk")); const bluebird_1 = require("bluebird"); const JSON5 = __importStar(require("json5")); const dk_lib_1 = require("@dkpkg/dk-lib"); const MyConfig_1 = require("../../../MyConfig"); const MyValues_1 = require("../../../MyValues"); class DelayAwsSqs { constructor() { aws_sdk_1.default.config.update({ accessKeyId: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ACCESS_KEY, secretAccessKey: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_SECRET_ACCESS_KEY, region: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_REGION, httpOptions: { connectTimeout: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_CONNECT_TIMEOUT, timeout: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_TIMEOUT, }, }); dk_lib_1.CkLogger.debugLog('aws config update', MyValues_1.PROC_LHD.LHD); this.AWS_SQS = new aws_sdk_1.default.SQS({ apiVersion: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_API_VERSION }); dk_lib_1.CkLogger.debugLog('aws sqs object created', MyValues_1.PROC_LHD.LHD); dk_lib_1.CkLogger.infoLog('create AWS SQS client', MyValues_1.PROC_LHD.LHD); } pushOne(lhd, msg) { return __awaiter(this, void 0, void 0, function* () { if (this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL === undefined) { this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL = yield this.getSQSQueueUrl(lhd); } const queueURL = this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL; return new bluebird_1.Promise((resolve, reject) => { if (!this.AWS_SQS) { dk_lib_1.CkLogger.errLog2('The aws sqs client was not created normally.', lhd); reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500)); return; } const params = { MessageBody: msg, QueueUrl: queueURL, }; const startTm = Date.now(); dk_lib_1.CkLogger.infoLog2(`<< try push message(one) to aws sqs. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}]`, lhd); this.AWS_SQS.sendMessage(params, (err, data) => { dk_lib_1.CkLogger.printElapsedLog2(lhd, startTm, 'push one to amazon sqs', MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ELAPSED_MILLI_SEC); if (err) { dk_lib_1.CkLogger.errLog2(`>> failed push message(one) to aws sqs. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], params [${JSON5.stringify(params)}]`, lhd); reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500)); return; } dk_lib_1.CkLogger.debugLog2(`push one to sqs. params [${JSON5.stringify(params)}], message id [${data.MessageId}]`, lhd); dk_lib_1.CkLogger.infoLog2(`>> success push message(one) to aws sqs. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], message id [${data.MessageId}]`, lhd); resolve(); }); }); }); } pushMulti(lhd, msgs) { return __awaiter(this, void 0, void 0, function* () { if (this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL === undefined) { this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL = yield this.getSQSQueueUrl(lhd); } const queueURL = this.AWS_SQS_FCM_RECV_CHECK_QUEUE_URL; return new bluebird_1.Promise((resolve, reject) => { if (!this.AWS_SQS) { dk_lib_1.CkLogger.errLog2('The aws sqs client was not created normally.', lhd); reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500)); return; } const entries = []; for (const msg of msgs) { entries.push({ Id: dk_lib_1.CkUtils.getUUIDV5(`${dk_lib_1.CkUtils.getUUID()}-${Date.now()}`), MessageBody: msg, }); } const params = { Entries: entries, QueueUrl: queueURL, }; const startTm = Date.now(); dk_lib_1.CkLogger.infoLog2('<< try push messages(batch) to aws sqs. queue ' + `[${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}]`, lhd); this.AWS_SQS.sendMessageBatch(params, (err, data) => { dk_lib_1.CkLogger.printElapsedLog2(lhd, startTm, 'push batch to amazon sqs', MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ELAPSED_MILLI_SEC); if (err) { dk_lib_1.CkLogger.errLog2('>> failed push messages(batch) to aws sqs. queue ' + `[${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], params [${JSON5.stringify(params)}]`, lhd); reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500)); return; } dk_lib_1.CkLogger.infoLog2('>> success push messages(batch) to aws sqs. queue ' + `[${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], count total [${entries.length}], ` + `success count [${data.Successful.length}], failed count [${data.Failed.length}]`, lhd); resolve(data.Successful.length); }); }); }); } getSQSQueueUrl(lhd) { return __awaiter(this, void 0, void 0, function* () { return new bluebird_1.Promise((resolve, reject) => { if (!this.AWS_SQS) { dk_lib_1.CkLogger.errLog2('The aws sqs client was not created normally.', lhd); reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.failed_push_to_amazon_sqs_queue, 500)); return; } const params = { QueueName: MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30 }; const startTm = Date.now(); dk_lib_1.CkLogger.infoLog2(`<< try get aws sqs queue url. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}]`, lhd); this.AWS_SQS.getQueueUrl(params, (err, data) => { dk_lib_1.CkLogger.printElapsedLog2('[aws-sqs]', startTm, 'get sqs queue url', MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_ELAPSED_MILLI_SEC); if (err) { dk_lib_1.CkLogger.errLog2(`>> failed get aws sqs queue url. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], err [${err.toString()}]`, lhd); reject(new dk_lib_1.CkError(lhd, dk_lib_1.CkValue.ERROR_TYPE.invalid_amazon_sqs_queue, 500)); return; } dk_lib_1.CkLogger.infoLog2(`>> success get aws sqs queue url. queue [${MyConfig_1.conf.HTF_DELAY_VENDOR_AWS_SQS_QUEUE_FCM_RECV_CHECK30}], ` + `url [${data.QueueUrl}]`, lhd); resolve(data.QueueUrl); }); }); }); } } exports.default = DelayAwsSqs;