UNPKG

ali-mns-sdk

Version:

The nodejs SDK for aliyun mns service

144 lines 12.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const PROMISE = require("promise"); const Url = require("url"); const Util = require("util"); const Xml2js = require("xml2js"); const XmlBuilder = require("xmlbuilder"); const GA_1 = require("./GA"); const Request_1 = require("./utils/Request"); // the ali open interface stack protocol class OpenStack { constructor(account) { this._patternMNS = 'MNS %s:%s'; this._patternSign = '%s\n%s\n%s\n%s\n%s%s'; this._contentType = 'text/xml;charset=utf-8'; this._version = '2015-06-06'; this._gaRGA = 0; // Reduce Google Analysis sending rate this._account = account; // Google Analytics this._ga = new GA_1.GA(account.getAccountId()); this._ga.disableGA(!account.getGA()); } // Send the request // method: GET, POST, PUT, DELETE // url: request url // body: optional, request body // head: optional, request heads // options: optional, request options sendP(method, url, body, headers, options) { const req = { method, url }; if (body) req.body = XmlBuilder.create(body).toString(); req.headers = this.makeHeaders(method, url, headers, req.body); // combines options if (options) { for (const opt in options) { if (opt === 'method' || opt === 'url' || opt === 'uri' || opt === 'body' || opt === 'headers') continue; // skip these options for avoid conflict to other arguments else if (options.hasOwnProperty(opt)) req[opt] = options[opt]; } } const parseStringP = PROMISE.denodeify(Xml2js.parseString); // tslint:disable-next-line: no-string-literal const ret = Request_1.default['requestP'](req) .then(response => { // convert the body from xml to json return parseStringP(response.body, { explicitArray: false, }).then(bodyJSON => { response.bodyJSON = bodyJSON; return response; }, () => { // cannot parse as xml response.bodyJSON = response.body; return response; }); }) .then(response => { if (response.statusCode < 400) { // 200 okay! if (response.bodyJSON) return response.bodyJSON; else return response.statusCode; } else { if (response.bodyJSON) return Promise.reject(response.bodyJSON); else return Promise.reject(response.statusCode); } }); // google analytics if (this._gaRGA % 1000000 === 0) this._ga.send('OpenStack.sendP', this._gaRGA, url); this._gaRGA++; return ret; } accumulateNextGASend(prefix) { this._ga.accumulateNextSend(prefix); } disableGA(bDisable) { this._ga.disableGA(bDisable); } makeHeaders(mothod, url, headers, body) { // if not exist, create one if (!headers) { headers = { 'User-Agent': 'Node/' + process.version + ' (' + process.platform + ')', }; } let contentMD5 = ''; let contentType = ''; if (body) { if (!headers['Content-Length']) headers['Content-Length'] = new Buffer(body, 'utf-8').length; if (!headers['Content-Type']) headers['Content-Type'] = this._contentType; contentType = headers['Content-Type']; contentMD5 = this._account.b64md5(body); headers['Content-MD5'] = contentMD5; } // `Date` & `Host` will be added by request automatically if (!headers['x-mns-version']) headers['x-mns-version'] = this._version; // lowercase & sort & extract the x-mns-<any> const headsLower = {}; const keys = []; for (const key in headers) { if (headers.hasOwnProperty(key)) { const lower = key.toLowerCase(); keys.push(lower); headsLower[lower] = headers[key]; } } keys.sort(); let mnsHeaders = ''; for (const i in keys) { const k = keys[i]; if (typeof k === 'string' && k.indexOf('x-mns-') === 0) { mnsHeaders += Util.format('%s:%s\n', k, headsLower[k]); } } const tm = new Date().toUTCString(); const mnsURL = Url.parse(url); headers.Date = tm; headers.Authorization = this.authorize(mothod, mnsURL.path, mnsHeaders, contentType, contentMD5, tm); headers.Host = mnsURL.host; return headers; } // ali mns authorize header authorize(httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm) { return Util.format(this._patternMNS, this._account.getKeyId(), this.signature(httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm)); } // ali mns signature signature(httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm) { const text = Util.format(this._patternSign, httpVerb, contentMD5, contentType, tm, mnsHeaders, mnsURI); return this._account.hmac_sha1(text, 'base64'); } } exports.OpenStack = OpenStack; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL09wZW5TdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFtQztBQUNuQywyQkFBMkI7QUFDM0IsNkJBQTZCO0FBQzdCLGlDQUFpQztBQUNqQyx5Q0FBeUM7QUFFekMsNkJBQTBCO0FBQzFCLDZDQUFzQztBQUV0Qyx3Q0FBd0M7QUFDeEMsTUFBYSxTQUFTO0lBQ3BCLFlBQVksT0FBZ0I7UUE4SXBCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsc0JBQXNCLENBQUM7UUFDdEMsaUJBQVksR0FBRyx3QkFBd0IsQ0FBQztRQUN4QyxhQUFRLEdBQUcsWUFBWSxDQUFDO1FBRXhCLFdBQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7UUFsSnhELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRXhCLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksT0FBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixpQ0FBaUM7SUFDakMsbUJBQW1CO0lBQ25CLCtCQUErQjtJQUMvQixnQ0FBZ0M7SUFDaEMscUNBQXFDO0lBQzlCLEtBQUssQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLElBQVUsRUFBRSxPQUFhLEVBQUUsT0FBYTtRQUNoRixNQUFNLEdBQUcsR0FBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLElBQUk7WUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFeEQsR0FBRyxDQUFDLE9BQU8s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