node-easysms
Version:
EasySMS is an SMS sender for Node.js
59 lines (58 loc) • 2.81 kB
JavaScript
;
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UroraGateway = void 0;
const GatewayErrorException_1 = require("../Core/Exceptions/GatewayErrorException");
const Gateway_1 = require("../Core/Gateway");
/**
* 极光短信服务
* @see [发送单条模板短信](https://docs.jiguang.cn/jsms/server/rest_api_jsms)
*/
class UroraGateway extends Gateway_1.Gateway {
send(to, message) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c, _d, _e;
let template = (_b = (_a = (yield message.getTemplate(this))) !== null && _a !== void 0 ? _a : this.config.template) !== null && _b !== void 0 ? _b : '';
let data = (_c = (yield message.getData(this))) !== null && _c !== void 0 ? _c : {};
let sign = (_e = (_d = (yield message.getSignName(this))) !== null && _d !== void 0 ? _d : this.config.sign_name) !== null && _e !== void 0 ? _e : '';
let method = 'messages';
let params = {
mobile: to.getUniversalNumber(),
sign_id: sign,
temp_id: template,
temp_para: data,
};
let result = yield this.post(this.buildEndpoint(method), params, {
'Authorization': this.generateAuthorization(this.config),
'Content-Type': 'application/json',
});
if (result['code']) {
throw new GatewayErrorException_1.GatewayErrorException(result['message'], result);
}
return result;
});
}
/**
* 生成授权信息
* @param config 极光短信配置
* @returns
*/
generateAuthorization(config) {
let authStr = `${config.app_key}:${config.app_secret}`;
return 'Basic ' + Buffer.from(authStr, 'utf-8').toString('base64');
}
buildEndpoint(method) {
return `https://${UroraGateway.ENDPOINT_DOMAIN}/${UroraGateway.ENDPOINT_VERSION}/${method}`;
}
}
exports.UroraGateway = UroraGateway;
UroraGateway.ENDPOINT_DOMAIN = 'api.sms.jpush.cn';
UroraGateway.ENDPOINT_VERSION = 'v1';