ali-mns-sdk
Version:
The nodejs SDK for aliyun mns service
115 lines • 9.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Url = require("url");
const Util = require("util");
const OpenStack_1 = require("./OpenStack");
const Region_1 = require("./Region");
const Debug_1 = require("./utils/Debug");
// The Topic
class Topic {
// The constructor. name & account is required.
// region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou"
constructor(name, account, region) {
this._region = new Region_1.Region(Region_1.City.Hangzhou);
this._pattern = '%s://%s.mns.%s.aliyuncs.com/topics/%s';
this._name = name;
this._account = account;
// region
if (region) {
if (typeof region === 'string')
this._region = new Region_1.Region(region, Region_1.NetworkType.Public, Region_1.Zone.China);
else
this._region = region;
}
// make url
this._urlAttr = this.makeAttrURL();
this._urlSubscription = this.makeSubscriptionURL();
this._urlPublish = this.makePublishURL();
// create the OpenStack object
this._openStack = new OpenStack_1.OpenStack(account);
}
getName() {
return this._name;
}
getAccount() {
return this._account;
}
getRegion() {
return this._region;
}
// 获取Topic的属性值
getAttrsP() {
Debug_1.default('GET ' + this._urlAttr);
return this._openStack.sendP('GET', this._urlAttr);
}
// 设置Topic的属性值
setAttrsP(options) {
const body = { Topic: options };
Debug_1.default('PUT ' + this._urlAttr, body);
return this._openStack.sendP('PUT', this._urlAttr + '?metaoverride=true', body);
}
// List all subscriptions.
listP(prefix, pageSize, pageMarker) {
const headers = {};
if (prefix)
headers['x-mns-prefix'] = prefix;
if (pageMarker)
headers['x-mns-marker'] = pageMarker;
if (pageSize)
headers['x-mns-ret-number'] = pageSize;
const url = this._urlSubscription.slice(0, -1);
Debug_1.default('GET ' + url);
return this._openStack.sendP('GET', url, null, headers);
}
subscribeP(name, endPoint, notifyStrategy, notifyContentFormat, filterTag) {
const body = {
Subscription: {
Endpoint: endPoint,
},
};
if (notifyStrategy)
body.Subscription.NotifyStrategy = notifyStrategy;
if (notifyContentFormat)
body.Subscription.NotifyContentFormat = notifyContentFormat;
if (filterTag)
body.Subscription.FilterTag = filterTag;
const url = Url.resolve(this._urlSubscription, name);
Debug_1.default('PUT ' + url, body);
return this._openStack.sendP('PUT', url, body);
}
unsubscribeP(name) {
const url = Url.resolve(this._urlSubscription, name);
Debug_1.default('DELETE ' + url);
return this._openStack.sendP('DELETE', url);
}
publishP(msg, b64, tag, attrs, options) {
const msgBlock = {
MessageBody: b64 ? this.utf8ToBase64(msg) : msg,
};
if (tag)
msgBlock.MessageTag = tag;
if (attrs)
msgBlock.MessageAttributes = attrs;
const body = {
Message: msgBlock,
};
Debug_1.default('POST ' + this._urlPublish, body);
this._openStack.accumulateNextGASend('Topic.publishP');
return this._openStack.sendP('POST', this._urlPublish, body, null, options);
}
utf8ToBase64(src) {
const buf = new Buffer(src, 'utf8');
return buf.toString('base64');
}
makeAttrURL() {
return Util.format(this._pattern, this._account.getHttps() ? 'https' : 'http', this._account.getAccountId(), this._region.toString(), this._name);
}
makeSubscriptionURL() {
return this.makeAttrURL() + '/subscriptions/';
}
makePublishURL() {
return this.makeAttrURL() + '/messages';
}
}
exports.Topic = Topic;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9waWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvVG9waWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBMkI7QUFDM0IsNkJBQTZCO0FBRzdCLDJDQUF3QztBQUN4QyxxQ0FBMkQ7QUFDM0QseUNBQWtDO0FBRWxDLFlBQVk7QUFDWixNQUFhLEtBQUs7SUFDaEIsK0NBQStDO0lBQy9DLDhFQUE4RTtJQUM5RSxZQUFZLElBQVksRUFBRSxPQUFnQixFQUFFLE1BQXdCO1FBNkg1RCxZQUFPLEdBQUcsSUFBSSxlQUFNLENBQUMsYUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBR3BDLGFBQVEsR0FBRyx1Q0FBdUMsQ0FBQztRQS9IekQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsU0FBUztRQUNULElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO2dCQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFNLENBQUMsTUFBTSxFQUFFLG9CQUFXLENBQUMsTUFBTSxFQUFFLGFBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Z0JBQzdGLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1NBQzVCO1FBRUQsV0FBVztRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV6Qyw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHFCQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELGNBQWM7SUFDUCxTQUFTO1FBQ2QsZUFBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxjQUFjO0lBQ1AsU0FBUyxDQUFDLE9BQVk7UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEMsZUFBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELDBCQUEwQjtJQUNuQixLQUFLLENBQUMsTUFBZSxFQUFFLFFBQWlCLEVBQUUsVUFBbUI7UUFDbEUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksTUFBTTtZQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDN0MsSUFBSSxVQUFVO1lBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUNyRCxJQUFJLFFBQVE7WUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxlQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxjQUF1QixFQUFFLG1CQUE0QixFQUFFLFNBQWtCO1FBUXpILE1BQU0sSUFBSSxHQUFVO1lBQ2xCLFlBQVksRUFBRTtnQkFDWixRQUFRLEVBQUUsUUFBUTthQUNuQjtTQUNGLENBQUM7UUFDRixJQUFJLGNBQWM7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDdEUsSUFBSSxtQkFBbUI7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBQ3JGLElBQUksU0FBUztZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN2RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxlQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZO1FBQzlCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELGVBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBWSxFQUFFLEdBQVksRUFBRSxLQUFXLEVBQUUsT0FBYTtRQUNqRixNQUFNLFFBQVEsR0FBUTtZQUNwQixXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO1NBQ2hELENBQUM7UUFFRixJQUFJLEdBQUc7WUFBRSxRQUFRLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNuQyxJQUFJLEtBQUs7WUFBRSxRQUFRLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTlDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsT0FBTyxFQUFFLFFBQVE7U0FDbEIsQ0FBQztRQUVGLGVBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFUyxZQUFZLENBQUMsR0FBRztRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztJQUNoRCxDQUFDO0lBRU8sY0FBYztRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDMUMsQ0FBQztDQVdGO0FBcElELHNCQW9JQyJ9