Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

nexmo

Package Overview
Dependencies
Maintainers
5
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nexmo - npm Package Compare versions

Comparing version 2.1.1 to 2.2.0

lib/Media.js

33

lib/Account.js

@@ -45,34 +45,19 @@ "use strict";

key: "checkBalance",
value: function checkBalance() {
this._nexmo.checkBalance.apply(this._nexmo, arguments);
value: function checkBalance(callback) {
return this.options.rest.get("/account/get-balance", callback);
}
/**
* TODO: document
*/
}, {
key: "updatePassword",
value: function updatePassword() {
this._nexmo.changePassword.apply(this._nexmo, arguments);
value: function updatePassword(newSecret, callback) {
return this.options.rest.postUseQueryString("/account/settings", { newSecret: newSecret }, callback);
}
/**
* TODO: document
*/
}, {
key: "updateSMSCallback",
value: function updateSMSCallback() {
this._nexmo.changeMoCallbackUrl.apply(this._nexmo, arguments);
value: function updateSMSCallback(moCallBackUrl, callback) {
return this.options.rest.postUseQueryString("/account/settings", { moCallBackUrl: moCallBackUrl }, callback);
}
/**
* TODO: document
*/
}, {
key: "updateDeliveryReceiptCallback",
value: function updateDeliveryReceiptCallback() {
this._nexmo.changeDrCallbackUrl.apply(this._nexmo, arguments);
value: function updateDeliveryReceiptCallback(drCallBackUrl, callback) {
return this.options.rest.postUseQueryString("/account/settings", { drCallBackUrl: drCallBackUrl }, callback);
}

@@ -91,2 +76,2 @@ }, {

module.exports = exports["default"];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9BY2NvdW50LmpzIl0sIm5hbWVzIjpbIkFjY291bnQiLCJjcmVkZW50aWFscyIsIm9wdGlvbnMiLCJjcmVkcyIsIl9uZXhtbyIsIm5leG1vT3ZlcnJpZGUiLCJpbml0aWFsaXplIiwiYXBpS2V5IiwiYXBpU2VjcmV0IiwiY2hlY2tCYWxhbmNlIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJjaGFuZ2VQYXNzd29yZCIsImNoYW5nZU1vQ2FsbGJhY2tVcmwiLCJjaGFuZ2VEckNhbGxiYWNrVXJsIiwidHJ4IiwiY2FsbGJhY2siLCJyZXN0IiwicG9zdFVzZVF1ZXJ5U3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7SUFFTUEsTztBQUNKOzs7Ozs7QUFNQSxtQkFBWUMsV0FBWixFQUF1QztBQUFBLFFBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFBQTs7QUFDckMsU0FBS0MsS0FBTCxHQUFhRixXQUFiO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmOztBQUVBO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLEtBQUtGLE9BQUwsQ0FBYUcsYUFBYixtQkFBZDs7QUFFQSxTQUFLRCxNQUFMLENBQVlFLFVBQVosQ0FDRSxLQUFLSCxLQUFMLENBQVdJLE1BRGIsRUFFRSxLQUFLSixLQUFMLENBQVdLLFNBRmIsRUFHRSxLQUFLTixPQUhQO0FBS0Q7O0FBRUQ7Ozs7Ozs7bUNBR2U7QUFDYixXQUFLRSxNQUFMLENBQVlLLFlBQVosQ0FBeUJDLEtBQXpCLENBQStCLEtBQUtOLE1BQXBDLEVBQTRDTyxTQUE1QztBQUNEOztBQUVEOzs7Ozs7cUNBR2lCO0FBQ2YsV0FBS1AsTUFBTCxDQUFZUSxjQUFaLENBQTJCRixLQUEzQixDQUFpQyxLQUFLTixNQUF0QyxFQUE4Q08sU0FBOUM7QUFDRDs7QUFFRDs7Ozs7O3dDQUdvQjtBQUNsQixXQUFLUCxNQUFMLENBQVlTLG1CQUFaLENBQWdDSCxLQUFoQyxDQUFzQyxLQUFLTixNQUEzQyxFQUFtRE8sU0FBbkQ7QUFDRDs7QUFFRDs7Ozs7O29EQUdnQztBQUM5QixXQUFLUCxNQUFMLENBQVlVLG1CQUFaLENBQWdDSixLQUFoQyxDQUFzQyxLQUFLTixNQUEzQyxFQUFtRE8sU0FBbkQ7QUFDRDs7OzBCQUVLSSxHLEVBQUtDLFEsRUFBVTtBQUNuQixhQUFPLEtBQUtkLE9BQUwsQ0FBYWUsSUFBYixDQUFrQkMsa0JBQWxCLENBQ0wsaUJBREssRUFFTCxFQUFFSCxRQUFGLEVBRkssRUFHTEMsUUFISyxDQUFQO0FBS0Q7Ozs7OztrQkFHWWhCLE8iLCJmaWxlIjoiQWNjb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbmV4bW8gZnJvbSBcIi4vaW5kZXhcIjtcblxuY2xhc3MgQWNjb3VudCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiAgICBjcmVkZW50aWFscyB0byBiZSB1c2VkIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQVBJLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKiAgICBBZGRpdGlvbiBBY2NvdW50IG9wdGlvbnMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjcmVkZW50aWFscywgb3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5jcmVkcyA9IGNyZWRlbnRpYWxzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAvLyBVc2VkIHRvIGZhY2lsaXRhdGUgdGVzdGluZyBvZiB0aGUgY2FsbCB0byB0aGUgdW5kZXJseWluZyBvYmplY3RcbiAgICB0aGlzLl9uZXhtbyA9IHRoaXMub3B0aW9ucy5uZXhtb092ZXJyaWRlIHx8IG5leG1vO1xuXG4gICAgdGhpcy5fbmV4bW8uaW5pdGlhbGl6ZShcbiAgICAgIHRoaXMuY3JlZHMuYXBpS2V5LFxuICAgICAgdGhpcy5jcmVkcy5hcGlTZWNyZXQsXG4gICAgICB0aGlzLm9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRPRE86IGRvY3VtZW50XG4gICAqL1xuICBjaGVja0JhbGFuY2UoKSB7XG4gICAgdGhpcy5fbmV4bW8uY2hlY2tCYWxhbmNlLmFwcGx5KHRoaXMuX25leG1vLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRPRE86IGRvY3VtZW50XG4gICAqL1xuICB1cGRhdGVQYXNzd29yZCgpIHtcbiAgICB0aGlzLl9uZXhtby5jaGFuZ2VQYXNzd29yZC5hcHBseSh0aGlzLl9uZXhtbywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBkb2N1bWVudFxuICAgKi9cbiAgdXBkYXRlU01TQ2FsbGJhY2soKSB7XG4gICAgdGhpcy5fbmV4bW8uY2hhbmdlTW9DYWxsYmFja1VybC5hcHBseSh0aGlzLl9uZXhtbywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBkb2N1bWVudFxuICAgKi9cbiAgdXBkYXRlRGVsaXZlcnlSZWNlaXB0Q2FsbGJhY2soKSB7XG4gICAgdGhpcy5fbmV4bW8uY2hhbmdlRHJDYWxsYmFja1VybC5hcHBseSh0aGlzLl9uZXhtbywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHRvcFVwKHRyeCwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlc3QucG9zdFVzZVF1ZXJ5U3RyaW5nKFxuICAgICAgXCIvYWNjb3VudC90b3AtdXBcIixcbiAgICAgIHsgdHJ4IH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQWNjb3VudDtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9BY2NvdW50LmpzIl0sIm5hbWVzIjpbIkFjY291bnQiLCJjcmVkZW50aWFscyIsIm9wdGlvbnMiLCJjcmVkcyIsIl9uZXhtbyIsIm5leG1vT3ZlcnJpZGUiLCJpbml0aWFsaXplIiwiYXBpS2V5IiwiYXBpU2VjcmV0IiwiY2FsbGJhY2siLCJyZXN0IiwiZ2V0IiwibmV3U2VjcmV0IiwicG9zdFVzZVF1ZXJ5U3RyaW5nIiwibW9DYWxsQmFja1VybCIsImRyQ2FsbEJhY2tVcmwiLCJ0cngiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQUVBOzs7Ozs7OztJQUVNQSxPO0FBQ0o7Ozs7OztBQU1BLG1CQUFZQyxXQUFaLEVBQXVDO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUFBOztBQUNyQyxTQUFLQyxLQUFMLEdBQWFGLFdBQWI7QUFDQSxTQUFLQyxPQUFMLEdBQWVBLE9BQWY7O0FBRUE7QUFDQSxTQUFLRSxNQUFMLEdBQWMsS0FBS0YsT0FBTCxDQUFhRyxhQUFiLG1CQUFkOztBQUVBLFNBQUtELE1BQUwsQ0FBWUUsVUFBWixDQUNFLEtBQUtILEtBQUwsQ0FBV0ksTUFEYixFQUVFLEtBQUtKLEtBQUwsQ0FBV0ssU0FGYixFQUdFLEtBQUtOLE9BSFA7QUFLRDs7QUFFRDs7Ozs7OztpQ0FHYU8sUSxFQUFVO0FBQ3JCLGFBQU8sS0FBS1AsT0FBTCxDQUFhUSxJQUFiLENBQWtCQyxHQUFsQixDQUFzQixzQkFBdEIsRUFBOENGLFFBQTlDLENBQVA7QUFDRDs7O21DQUVjRyxTLEVBQVdILFEsRUFBVTtBQUNsQyxhQUFPLEtBQUtQLE9BQUwsQ0FBYVEsSUFBYixDQUFrQkcsa0JBQWxCLENBQ0wsbUJBREssRUFFTCxFQUFFRCxvQkFBRixFQUZLLEVBR0xILFFBSEssQ0FBUDtBQUtEOzs7c0NBRWlCSyxhLEVBQWVMLFEsRUFBVTtBQUN6QyxhQUFPLEtBQUtQLE9BQUwsQ0FBYVEsSUFBYixDQUFrQkcsa0JBQWxCLENBQ0wsbUJBREssRUFFTCxFQUFFQyw0QkFBRixFQUZLLEVBR0xMLFFBSEssQ0FBUDtBQUtEOzs7a0RBRTZCTSxhLEVBQWVOLFEsRUFBVTtBQUNyRCxhQUFPLEtBQUtQLE9BQUwsQ0FBYVEsSUFBYixDQUFrQkcsa0JBQWxCLENBQ0wsbUJBREssRUFFTCxFQUFFRSw0QkFBRixFQUZLLEVBR0xOLFFBSEssQ0FBUDtBQUtEOzs7MEJBRUtPLEcsRUFBS1AsUSxFQUFVO0FBQ25CLGFBQU8sS0FBS1AsT0FBTCxDQUFhUSxJQUFiLENBQWtCRyxrQkFBbEIsQ0FDTCxpQkFESyxFQUVMLEVBQUVHLFFBQUYsRUFGSyxFQUdMUCxRQUhLLENBQVA7QUFLRDs7Ozs7O2tCQUdZVCxPIiwiZmlsZSI6IkFjY291bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG5leG1vIGZyb20gXCIuL2luZGV4XCI7XG5cbmNsYXNzIEFjY291bnQge1xuICAvKipcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICogICAgY3JlZGVudGlhbHMgdG8gYmUgdXNlZCB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIEFQSS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogICAgQWRkaXRpb24gQWNjb3VudCBvcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY3JlZGVudGlhbHMsIG9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuY3JlZHMgPSBjcmVkZW50aWFscztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgLy8gVXNlZCB0byBmYWNpbGl0YXRlIHRlc3Rpbmcgb2YgdGhlIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0XG4gICAgdGhpcy5fbmV4bW8gPSB0aGlzLm9wdGlvbnMubmV4bW9PdmVycmlkZSB8fCBuZXhtbztcblxuICAgIHRoaXMuX25leG1vLmluaXRpYWxpemUoXG4gICAgICB0aGlzLmNyZWRzLmFwaUtleSxcbiAgICAgIHRoaXMuY3JlZHMuYXBpU2VjcmV0LFxuICAgICAgdGhpcy5vcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBkb2N1bWVudFxuICAgKi9cbiAgY2hlY2tCYWxhbmNlKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXN0LmdldChcIi9hY2NvdW50L2dldC1iYWxhbmNlXCIsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHVwZGF0ZVBhc3N3b3JkKG5ld1NlY3JldCwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlc3QucG9zdFVzZVF1ZXJ5U3RyaW5nKFxuICAgICAgXCIvYWNjb3VudC9zZXR0aW5nc1wiLFxuICAgICAgeyBuZXdTZWNyZXQgfSxcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNNU0NhbGxiYWNrKG1vQ2FsbEJhY2tVcmwsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXN0LnBvc3RVc2VRdWVyeVN0cmluZyhcbiAgICAgIFwiL2FjY291bnQvc2V0dGluZ3NcIixcbiAgICAgIHsgbW9DYWxsQmFja1VybCB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlRGVsaXZlcnlSZWNlaXB0Q2FsbGJhY2soZHJDYWxsQmFja1VybCwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlc3QucG9zdFVzZVF1ZXJ5U3RyaW5nKFxuICAgICAgXCIvYWNjb3VudC9zZXR0aW5nc1wiLFxuICAgICAgeyBkckNhbGxCYWNrVXJsIH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICB0b3BVcCh0cngsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXN0LnBvc3RVc2VRdWVyeVN0cmluZyhcbiAgICAgIFwiL2FjY291bnQvdG9wLXVwXCIsXG4gICAgICB7IHRyeCB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFjY291bnQ7XG4iXX0=

@@ -13,2 +13,3 @@ "use strict";

var http = require("http");
var request = require("request");
var querystring = require("querystring");

@@ -30,2 +31,4 @@

this.logger = options.logger;
this.timeout = options.timeout;
this.requestLib = request;

@@ -42,2 +45,4 @@ if (options.userAgent) {

var skipJsonParsing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (typeof method === "function") {

@@ -64,2 +69,6 @@ callback = method;

if (this.timeout !== undefined) {
options.timeout = this.timeout;
}
// Allow existing headers to be overridden

@@ -79,3 +88,3 @@ // Allow new headers to be added

} else {
request = http.request(options);
request = this.http.request(options);
}

@@ -106,3 +115,3 @@

_this.__parseResponse(response, responseData, endpoint.method, callback);
_this.__parseResponse(response, responseData, endpoint.method, callback, skipJsonParsing);
}

@@ -124,3 +133,3 @@ });

key: "__parseResponse",
value: function __parseResponse(httpResponse, data, method, callback) {
value: function __parseResponse(httpResponse, data, method, callback, skipJsonParsing) {
var isArrayOrBuffer = data instanceof Array || data instanceof Buffer;

@@ -155,3 +164,7 @@ if (!isArrayOrBuffer) {

} else if (method !== "DELETE") {
response = JSON.parse(data.join(""));
if (!!skipJsonParsing) {
response = data.join("");
} else {
response = JSON.parse(data.join(""));
}
} else {

@@ -197,17 +210,94 @@ response = data;

value: function get(path, params, callback) {
var useJwt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (!callback) {
if (typeof params == "function") {
callback = params;
params = {};
}
}
params = params || {};
params["api_key"] = this.credentials.apiKey;
params["api_secret"] = this.credentials.apiSecret;
if (!useJwt) {
params["api_key"] = this.credentials.apiKey;
params["api_secret"] = this.credentials.apiSecret;
}
path = path + "?" + querystring.stringify(params);
this.request({ path: path }, "GET", callback);
var headers = { "Content-Type": "application/json" };
if (useJwt) {
headers["Authorization"] = "Bearer " + this.credentials.generateJwt();
}
this.request({ path: path, headers: headers }, "GET", callback);
}
}, {
key: "delete",
value: function _delete(path, callback, useJwt) {
var params = {};
if (!useJwt) {
params["api_key"] = this.credentials.apiKey;
params["api_secret"] = this.credentials.apiSecret;
}
path = path + "?" + querystring.stringify(params);
this.request({ path: path }, "DELETE", callback);
}
}, {
key: "postFile",
value: function postFile(path, options, callback, useJwt) {
var qs = {};
if (!useJwt) {
qs["api_key"] = this.credentials.apiKey;
qs["api_secret"] = this.credentials.apiSecret;
}
if (Object.keys(qs).length) {
var joinChar = "?";
if (path.indexOf(joinChar) !== -1) {
joinChar = "&";
}
path = path + joinChar + querystring.stringify(qs);
}
var file = options.file;
delete options.file; // We don't send this as metadata
var formData = {};
if (file) {
formData["filedata"] = {
value: file,
options: {
filename: options.filename || null
}
};
}
if (options.info) {
formData.info = JSON.stringify(options.info);
}
if (options.url) {
formData.url = options.url;
}
this.requestLib.post({
url: "https://" + this.host + path,
formData: formData,
headers: {
Authorization: "Bearer " + this.credentials.generateJwt()
}
}, callback);
}
}, {
key: "post",
value: function post(path, params, callback) {
var qs = {
api_key: this.credentials.apiKey,
api_secret: this.credentials.apiSecret
};
value: function post(path, params, callback, useJwt) {
var qs = {};
if (!useJwt) {
qs["api_key"] = this.credentials.apiKey;
qs["api_secret"] = this.credentials.apiSecret;
}

@@ -225,6 +315,8 @@ var joinChar = "?";

key: "postUseQueryString",
value: function postUseQueryString(path, params, callback) {
value: function postUseQueryString(path, params, callback, useJwt) {
params = params || {};
params["api_key"] = this.credentials.apiKey;
params["api_secret"] = this.credentials.apiSecret;
if (!useJwt) {
params["api_key"] = this.credentials.apiKey;
params["api_secret"] = this.credentials.apiSecret;
}

@@ -242,2 +334,2 @@ path = path + "?" + querystring.stringify(params);

module.exports = exports["default"];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9IdHRwQ2xpZW50LmpzIl0sIm5hbWVzIjpbImh0dHBzIiwicmVxdWlyZSIsImh0dHAiLCJxdWVyeXN0cmluZyIsIkh0dHBDbGllbnQiLCJvcHRpb25zIiwiY3JlZGVudGlhbHMiLCJob3N0IiwicG9ydCIsImhlYWRlcnMiLCJBY2NlcHQiLCJsb2dnZXIiLCJ1c2VyQWdlbnQiLCJlbmRwb2ludCIsIm1ldGhvZCIsImNhbGxiYWNrIiwicGF0aCIsIk9iamVjdCIsImFzc2lnbiIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiaW5mbyIsImJvZHkiLCJyZXF1ZXN0IiwiZW5kIiwicmVzcG9uc2VEYXRhIiwib24iLCJpc0JpbmFyeSIsInJlc3BvbnNlIiwic2V0RW5jb2RpbmciLCJwdXNoIiwiY2h1bmsiLCJzdGF0dXNDb2RlIiwiQnVmZmVyIiwiY29uY2F0IiwiX19wYXJzZVJlc3BvbnNlIiwiZXJyb3IiLCJlIiwiaHR0cFJlc3BvbnNlIiwiZGF0YSIsImlzQXJyYXlPckJ1ZmZlciIsIkFycmF5IiwiRXJyb3IiLCJzdGF0dXMiLCJtZXNzYWdlIiwicmV0cnlBZnRlck1pbGxpcyIsImpvaW4iLCJKU09OIiwicGFyc2UiLCJwYXJzZUVycm9yIiwibGltaXRlZEFjY2Vzc1N0YXR1cyIsImVyciIsIl9JTkZPXyIsInBhcmFtcyIsImFwaUtleSIsImFwaVNlY3JldCIsInN0cmluZ2lmeSIsInFzIiwiYXBpX2tleSIsImFwaV9zZWNyZXQiLCJqb2luQ2hhciIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxRQUFRQyxRQUFRLE9BQVIsQ0FBWjtBQUNBLElBQUlDLE9BQU9ELFFBQVEsTUFBUixDQUFYO0FBQ0EsSUFBSUUsY0FBY0YsUUFBUSxhQUFSLENBQWxCOztJQUVNRyxVO0FBQ0osc0JBQVlDLE9BQVosRUFBcUJDLFdBQXJCLEVBQWtDO0FBQUE7O0FBQ2hDLFNBQUtBLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsU0FBS0MsSUFB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QUFYO0FBQ0Q7O0FBRUQ3QyxhQUFPQSxPQUFPNkMsUUFBUCxHQUFrQjFELFlBQVlzRCxTQUFaLENBQXNCQyxFQUF0QixDQUF6Qjs7QUFFQSxXQUFLbEMsT0FBTCxDQUNFLEVBQUVSLE1BQU1BLElBQVIsRUFBY08sTUFBTXBCLFlBQVlzRCxTQUFaLENBQXNCSCxNQUF0QixDQUFwQixFQURGLEVBRUUsTUFGRixFQUdFdkMsUUFIRjtBQUtEOzs7dUNBRWtCQyxJLEVBQU1zQyxNLEVBQVF2QyxRLEVBQVU7QUFDekN1QyxlQUFTQSxVQUFVLEVBQW5CO0FBQ0FBLGFBQU8sU0FBUCxJQUFvQixLQUFLaEQsV0FBTCxDQUFpQmlELE1BQXJDO0FBQ0FELGFBQU8sWUFBUCxJQUF1QixLQUFLaEQsV0FBTCxDQUFpQmtELFNBQXhDOztBQUVBeEMsYUFBT0EsT0FBTyxHQUFQLEdBQWFiLFlBQVlzRCxTQUFaLENBQXNCSCxNQUF0QixDQUFwQjs7QUFFQSxXQUFLOUIsT0FBTCxDQUFhLEVBQUVSLE1BQU1BLElBQVIsRUFBYixFQUE2QixNQUE3QixFQUFxQ0QsUUFBckM7QUFDRDs7Ozs7O2tCQUdZWCxVIiwiZmlsZSI6Ikh0dHBDbGllbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaHR0cHMgPSByZXF1aXJlKFwiaHR0cHNcIik7XG52YXIgaHR0cCA9IHJlcXVpcmUoXCJodHRwXCIpO1xudmFyIHF1ZXJ5c3RyaW5nID0gcmVxdWlyZShcInF1ZXJ5c3RyaW5nXCIpO1xuXG5jbGFzcyBIdHRwQ2xpZW50IHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucywgY3JlZGVudGlhbHMpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHM7XG4gICAgdGhpcy5ob3N0ID0gb3B0aW9ucy5ob3N0IHx8IFwicmVzdC5uZXhtby5jb21cIjtcbiAgICB0aGlzLnBvcnQgPSBvcHRpb25zLnBvcnQgfHwgNDQzO1xuICAgIHRoaXMuaHR0cHMgPSBvcHRpb25zLmh0dHBzIHx8IGh0dHBzO1xuICAgIHRoaXMuaHR0cCA9IG9wdGlvbnMuaHR0cCB8fCBodHRwO1xuICAgIHRoaXMuaGVhZGVycyA9IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXG4gICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfTtcbiAgICB0aGlzLmxvZ2dlciA9IG9wdGlvbnMubG9nZ2VyO1xuXG4gICAgaWYgKG9wdGlvbnMudXNlckFnZW50KSB7XG4gICAgICB0aGlzLmhlYWRlcnNbXCJVc2VyLUFnZW50XCJdID0gb3B0aW9ucy51c2VyQWdlbnQ7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdChlbmRwb2ludCwgbWV0aG9kLCBjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNhbGxiYWNrID0gbWV0aG9kO1xuICAgICAgZW5kcG9pbnQubWV0aG9kID0gZW5kcG9pbnQubWV0aG9kIHx8IFwiR0VUXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWV0aG9kICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBlbmRwb2ludC5tZXRob2QgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgaWYgKGVuZHBvaW50Lm1ldGhvZCA9PT0gXCJQT1NUXCIgfHwgZW5kcG9pbnQubWV0aG9kID09PSBcIkRFTEVURVwiKSB7XG4gICAgICAvLyBUT0RPOiB2ZXJpZnkgdGhlIGZvbGxvd2luZyBmaXggaXMgcmVxdWlyZWRcbiAgICAgIC8vIEZpeCBicm9rZW4gZHVlIG90IDQxMSBDb250ZW50LUxlbmd0aCBlcnJvciBub3cgc2VudCBieSBOZXhtbyBBUElcbiAgICAgIC8vIFBMIDIwMTYtU2VwdC02IC0gY29tbWVudGVkIG91dCBDb250ZW50LUxlbmd0aCAwXG4gICAgICAvLyBoZWFkZXJzWydDb250ZW50LUxlbmd0aCddID0gMDtcbiAgICB9XG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICBob3N0OiBlbmRwb2ludC5ob3N0ID8gZW5kcG9pbnQuaG9zdCA6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHBhdGg6IGVuZHBvaW50LnBhdGgsXG4gICAgICBtZXRob2Q6IGVuZHBvaW50Lm1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuaGVhZGVycylcbiAgICB9O1xuXG4gICAgLy8gQWxsb3cgZXhpc3RpbmcgaGVhZGVycyB0byBiZSBvdmVycmlkZGVuXG4gICAgLy8gQWxsb3cgbmV3IGhlYWRlcnMgdG8gYmUgYWRkZWRcbiAgICBpZiAoZW5kcG9pbnQuaGVhZGVycykge1xuICAgICAgT2JqZWN0LmtleXMoZW5kcG9pbnQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW2tleV0gPSBlbmRwb2ludC5oZWFkZXJzW2tleV07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKFwiUmVxdWVzdDpcIiwgb3B0aW9ucywgXCJcXG5Cb2R5OlwiLCBlbmRwb2ludC5ib2R5KTtcbiAgICB2YXIgcmVxdWVzdDtcblxuICAgIGlmIChvcHRpb25zLnBvcnQgPT09IDQ0Mykge1xuICAgICAgcmVxdWVzdCA9IHRoaXMuaHR0cHMucmVxdWVzdChvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdCA9IGh0dHAucmVxdWVzdChvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXF1ZXN0LmVuZChlbmRwb2ludC5ib2R5KTtcblxuICAgIC8vIEtlZXAgYW4gYXJyYXkgb2YgU3RyaW5nIG9yIEJ1ZmZlcnMsXG4gICAgLy8gZGVwZW5kaW5nIG9uIGNvbnRlbnQgdHlwZSAoYmluYXJ5IG9yIEpTT04pIG9mIHJlc3BvbnNlXG4gICAgdmFyIHJlc3BvbnNlRGF0YSA9IFtdO1xuXG4gICAgcmVxdWVzdC5vbihcInJlc3BvbnNlXCIsIHJlc3BvbnNlID0+IHtcbiAgICAgIHZhciBpc0JpbmFyeSA9XG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gPT09IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gICAgICBpZiAoIWlzQmluYXJ5KSB7XG4gICAgICAgIHJlc3BvbnNlLnNldEVuY29kaW5nKFwidXRmOFwiKTtcbiAgICAgIH1cblxuICAgICAgcmVzcG9uc2Uub24oXCJkYXRhXCIsIGNodW5rID0+IHtcbiAgICAgICAgcmVzcG9uc2VEYXRhLnB1c2goY2h1bmspO1xuICAgICAgfSk7XG5cbiAgICAgIHJlc3BvbnNlLm9uKFwiZW5kXCIsICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcInJlc3BvbnNlIGVuZGVkOlwiLCByZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgaWYgKGlzQmluYXJ5KSB7XG4gICAgICAgICAgICByZXNwb25zZURhdGEgPSBCdWZmZXIuY29uY2F0KHJlc3BvbnNlRGF0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fX3BhcnNlUmVzcG9uc2UoXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIHJlc3BvbnNlRGF0YSxcbiAgICAgICAgICAgIGVuZHBvaW50Lm1ldGhvZCxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXNwb25zZS5vbihcImNsb3NlXCIsIGUgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICBcInByb2JsZW0gd2l0aCBBUEkgcmVxdWVzdCBkZXRhaWxlZCBzdGFja3RyYWNlIGJlbG93IFwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICBjYWxsYmFjayhlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJlcXVlc3Qub24oXCJlcnJvclwiLCBlID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwicHJvYmxlbSB3aXRoIEFQSSByZXF1ZXN0IGRldGFpbGVkIHN0YWNrdHJhY2UgYmVsb3cgXCIpO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICBjYWxsYmFjayhlKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9fcGFyc2VSZXNwb25zZShodHRwUmVzcG9uc2UsIGRhdGEsIG1ldGhvZCwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBpc0FycmF5T3JCdWZmZXIgPSBkYXRhIGluc3RhbmNlb2YgQXJyYXkgfHwgZGF0YSBpbnN0YW5jZW9mIEJ1ZmZlcjtcbiAgICBpZiAoIWlzQXJyYXlPckJ1ZmZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBzaG91bGQgYmUgb2YgdHlwZSBBcnJheSBvciBCdWZmZXJcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzID0gaHR0cFJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgY29uc3QgaGVhZGVycyA9IGh0dHBSZXNwb25zZS5oZWFkZXJzO1xuXG4gICAgbGV0IHJlc3BvbnNlID0gbnVsbDtcbiAgICB2YXIgZXJyb3IgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgICAgIGVycm9yID0geyBtZXNzYWdlOiBcIlNlcnZlciBFcnJvclwiLCBzdGF0dXNDb2RlOiBzdGF0dXMgfTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGh0dHBSZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdID09PSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQyOSkge1xuICAgICAgICAvLyA0MjkgZG9lcyBub3QgcmV0dXJuIGEgcGFyc2FibGUgYm9keVxuICAgICAgICBpZiAoIWhlYWRlcnNbXCJyZXRyeS1hZnRlclwiXSkge1xuICAgICAgICAgIC8vIHJldHJ5IGJhc2VkIG9uIGFsbG93ZWQgcGVyIHNlY29uZFxuICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJNaWxsaXMgPSBtZXRob2QgPT09IFwiUE9TVFwiID8gMTAwMCAvIDIgOiAxMDAwIC8gNTtcbiAgICAgICAgICBoZWFkZXJzW1wicmV0cnktYWZ0ZXJcIl0gPSByZXRyeUFmdGVyTWlsbGlzO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yID0geyBib2R5OiBkYXRhLmpvaW4oXCJcIikgfTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPj0gNDAwIHx8IHN0YXR1cyA8IDIwMCkge1xuICAgICAgICBlcnJvciA9IHsgYm9keTogSlNPTi5wYXJzZShkYXRhLmpvaW4oXCJcIikpLCBoZWFkZXJzIH07XG4gICAgICB9IGVsc2UgaWYgKG1ldGhvZCAhPT0gXCJERUxFVEVcIikge1xuICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YS5qb2luKFwiXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihwYXJzZUVycm9yKTtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBcImNvdWxkIG5vdCBjb252ZXJ0IEFQSSByZXNwb25zZSB0byBKU09OLCBhYm92ZSBlcnJvciBpcyBpZ25vcmVkIGFuZCByYXcgQVBJIHJlc3BvbnNlIGlzIHJldHVybmVkIHRvIGNsaWVudFwiXG4gICAgICApO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJSYXcgRXJyb3IgbWVzc2FnZSBmcm9tIEFQSSBcIik7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgXCIke2RhdGF9XCJgKTtcblxuICAgICAgZXJyb3IgPSB7XG4gICAgICAgIHN0YXR1czogc3RhdHVzLFxuICAgICAgICBtZXNzYWdlOiBcIlRoZSBBUEkgcmVzcG9uc2UgY291bGQgbm90IGJlIHBhcnNlZC5cIixcbiAgICAgICAgYm9keTogZGF0YS5qb2luKFwiXCIpLFxuICAgICAgICBwYXJzZUVycm9yOiBwYXJzZUVycm9yXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgICAgIGVycm9yLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlKTtcbiAgICB9XG4gIH1cblxuICBfYWRkTGltaXRlZEFjY2Vzc01lc3NhZ2VUb0Vycm9ycyhjYWxsYmFjaywgbGltaXRlZEFjY2Vzc1N0YXR1cykge1xuICAgIHJldHVybiBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLnN0YXR1cyA9PSBsaW1pdGVkQWNjZXNzU3RhdHVzKSB7XG4gICAgICAgIGVyci5fSU5GT18gPVxuICAgICAgICAgIFwiVGhpcyBlbmRwb2ludCBtYXkgbmVlZCBhY3RpdmF0aW5nIG9uIHlvdXIgYWNjb3VudC4gUGxlYXNlIGVtYWlsIHN1cHBvcnRAbmV4bW8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uXCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIGRhdGEpO1xuICAgIH07XG4gIH1cblxuICBnZXQocGF0aCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgICBwYXJhbXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgcGFyYW1zW1wiYXBpX3NlY3JldFwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0O1xuXG4gICAgcGF0aCA9IHBhdGggKyBcIj9cIiArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgdGhpcy5yZXF1ZXN0KHsgcGF0aDogcGF0aCB9LCBcIkdFVFwiLCBjYWxsYmFjayk7XG4gIH1cblxuICBwb3N0KHBhdGgsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBsZXQgcXMgPSB7XG4gICAgICBhcGlfa2V5OiB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleSxcbiAgICAgIGFwaV9zZWNyZXQ6IHRoaXMuY3JlZGVudGlhbHMuYXBpU2VjcmV0XG4gICAgfTtcblxuICAgIGxldCBqb2luQ2hhciA9IFwiP1wiO1xuICAgIGlmIChwYXRoLmluZGV4T2Yoam9pbkNoYXIpICE9PSAtMSkge1xuICAgICAgam9pbkNoYXIgPSBcIiZcIjtcbiAgICB9XG5cbiAgICBwYXRoID0gcGF0aCArIGpvaW5DaGFyICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHFzKTtcblxuICAgIHRoaXMucmVxdWVzdChcbiAgICAgIHsgcGF0aDogcGF0aCwgYm9keTogcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHBhcmFtcykgfSxcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgcG9zdFVzZVF1ZXJ5U3RyaW5nKHBhdGgsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gICAgcGFyYW1zW1wiYXBpX2tleVwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5O1xuICAgIHBhcmFtc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcblxuICAgIHBhdGggPSBwYXRoICsgXCI/XCIgKyBxdWVyeXN0cmluZy5zdHJpbmdpZnkocGFyYW1zKTtcblxuICAgIHRoaXMucmVxdWVzdCh7IHBhdGg6IHBhdGggfSwgXCJQT1NUXCIsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIdHRwQ2xpZW50O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9IdHRwQ2xpZW50LmpzIl0sIm5hbWVzIjpbImh0dHBzIiwicmVxdWlyZSIsImh0dHAiLCJyZXF1ZXN0IiwicXVlcnlzdHJpbmciLCJIdHRwQ2xpZW50Iiwib3B0aW9ucyIsImNyZWRlbnRpYWxzIiwiaG9zdCIsInBvcnQiLCJoZWFkZXJzIiwiQWNjZXB0IiwibG9nZ2VyIiwidGltZW91dCIsInJlcXVlc3RMaWIiLCJ1c2VyQWdlbnQiLCJlbmRwb2ludCIsIm1ldGhvZCIsImNhbGxiYWNrIiwic2tpcEpzb25QYXJzaW5nIiwicGF0aCIsIk9iamVjdCIsImFzc2lnbiIsInVuZGVmaW5lZCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiaW5mbyIsImJvZHkiLCJlbmQiLCJyZXNwb25zZURhdGEiLCJvbiIsImlzQmluYXJ5IiwicmVzcG9uc2UiLCJzZXRFbmNvZGluZyIsInB1c2giLCJjaHVuayIsInN0YXR1c0NvZGUiLCJCdWZmZXIiLCJjb25jYXQiLCJfX3BhcnNlUmVzcG9uc2UiLCJlcnJvciIsImUiLCJodHRwUmVzcG9uc2UiLCJkYXRhIiwiaXNBcnJheU9yQnVmZmVyIiwiQXJyYXkiLCJFcnJvciIsInN0YXR1cyIsIm1lc3NhZ2UiLCJyZXRyeUFmdGVyTWlsbGlzIiwiam9pbiIsIkpTT04iLCJwYXJzZSIsInBhcnNlRXJyb3IiLCJsaW1pdGVkQWNjZXNzU3RhdHVzIiwiZXJyIiwiX0lORk9fIiwicGFyYW1zIiwidXNlSnd0IiwiYXBpS2V5IiwiYXBpU2VjcmV0Iiwic3RyaW5naWZ5IiwiZ2VuZXJhdGVKd3QiLCJxcyIsImxlbmd0aCIsImpvaW5DaGFyIiwiaW5kZXhPZiIsImZpbGUiLCJmb3JtRGF0YSIsInZhbHVlIiwiZmlsZW5hbWUiLCJ1cmwiLCJwb3N0IiwiQXV0aG9yaXphdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUlBLFFBQVFDLFFBQVEsT0FBUixDQUFaO0FBQ0EsSUFBSUMsT0FBT0QsUUFBUSxNQUFSLENBQVg7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IiwiZmlsZSI6Ikh0dHBDbGllbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaHR0cHMgPSByZXF1aXJlKFwiaHR0cHNcIik7XG52YXIgaHR0cCA9IHJlcXVpcmUoXCJodHRwXCIpO1xudmFyIHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcbnZhciBxdWVyeXN0cmluZyA9IHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKTtcblxuY2xhc3MgSHR0cENsaWVudCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGNyZWRlbnRpYWxzKSB7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuICAgIHRoaXMuaG9zdCA9IG9wdGlvbnMuaG9zdCB8fCBcInJlc3QubmV4bW8uY29tXCI7XG4gICAgdGhpcy5wb3J0ID0gb3B0aW9ucy5wb3J0IHx8IDQ0MztcbiAgICB0aGlzLmh0dHBzID0gb3B0aW9ucy5odHRwcyB8fCBodHRwcztcbiAgICB0aGlzLmh0dHAgPSBvcHRpb25zLmh0dHAgfHwgaHR0cDtcbiAgICB0aGlzLmhlYWRlcnMgPSB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIH07XG4gICAgdGhpcy5sb2dnZXIgPSBvcHRpb25zLmxvZ2dlcjtcbiAgICB0aGlzLnRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQ7XG4gICAgdGhpcy5yZXF1ZXN0TGliID0gcmVxdWVzdDtcblxuICAgIGlmIChvcHRpb25zLnVzZXJBZ2VudCkge1xuICAgICAgdGhpcy5oZWFkZXJzW1wiVXNlci1BZ2VudFwiXSA9IG9wdGlvbnMudXNlckFnZW50O1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3QoZW5kcG9pbnQsIG1ldGhvZCwgY2FsbGJhY2ssIHNraXBKc29uUGFyc2luZyA9IGZhbHNlKSB7XG4gICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgICBlbmRwb2ludC5tZXRob2QgPSBlbmRwb2ludC5tZXRob2QgfHwgXCJHRVRcIjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGVuZHBvaW50Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICB9XG5cbiAgICBpZiAoZW5kcG9pbnQubWV0aG9kID09PSBcIlBPU1RcIiB8fCBlbmRwb2ludC5tZXRob2QgPT09IFwiREVMRVRFXCIpIHtcbiAgICAgIC8vIFRPRE86IHZlcmlmeSB0aGUgZm9sbG93aW5nIGZpeCBpcyByZXF1aXJlZFxuICAgICAgLy8gRml4IGJyb2tlbiBkdWUgb3QgNDExIENvbnRlbnQtTGVuZ3RoIGVycm9yIG5vdyBzZW50IGJ5IE5leG1vIEFQSVxuICAgICAgLy8gUEwgMjAxNi1TZXB0LTYgLSBjb21tZW50ZWQgb3V0IENvbnRlbnQtTGVuZ3RoIDBcbiAgICAgIC8vIGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSAwO1xuICAgIH1cbiAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgIGhvc3Q6IGVuZHBvaW50Lmhvc3QgPyBlbmRwb2ludC5ob3N0IDogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgcGF0aDogZW5kcG9pbnQucGF0aCxcbiAgICAgIG1ldGhvZDogZW5kcG9pbnQubWV0aG9kLFxuICAgICAgaGVhZGVyczogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5oZWFkZXJzKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy50aW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMudGltZW91dCA9IHRoaXMudGltZW91dDtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBleGlzdGluZyBoZWFkZXJzIHRvIGJlIG92ZXJyaWRkZW5cbiAgICAvLyBBbGxvdyBuZXcgaGVhZGVycyB0byBiZSBhZGRlZFxuICAgIGlmIChlbmRwb2ludC5oZWFkZXJzKSB7XG4gICAgICBPYmplY3Qua2V5cyhlbmRwb2ludC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNba2V5XSA9IGVuZHBvaW50LmhlYWRlcnNba2V5XTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLmluZm8oXCJSZXF1ZXN0OlwiLCBvcHRpb25zLCBcIlxcbkJvZHk6XCIsIGVuZHBvaW50LmJvZHkpO1xuICAgIHZhciByZXF1ZXN0O1xuXG4gICAgaWYgKG9wdGlvbnMucG9ydCA9PT0gNDQzKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwcy5yZXF1ZXN0KG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5odHRwLnJlcXVlc3Qob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmVxdWVzdC5lbmQoZW5kcG9pbnQuYm9keSk7XG5cbiAgICAvLyBLZWVwIGFuIGFycmF5IG9mIFN0cmluZyBvciBCdWZmZXJzLFxuICAgIC8vIGRlcGVuZGluZyBvbiBjb250ZW50IHR5cGUgKGJpbmFyeSBvciBKU09OKSBvZiByZXNwb25zZVxuICAgIHZhciByZXNwb25zZURhdGEgPSBbXTtcblxuICAgIHJlcXVlc3Qub24oXCJyZXNwb25zZVwiLCByZXNwb25zZSA9PiB7XG4gICAgICB2YXIgaXNCaW5hcnkgPVxuICAgICAgICByZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdID09PSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xuICAgICAgaWYgKCFpc0JpbmFyeSkge1xuICAgICAgICByZXNwb25zZS5zZXRFbmNvZGluZyhcInV0ZjhcIik7XG4gICAgICB9XG5cbiAgICAgIHJlc3BvbnNlLm9uKFwiZGF0YVwiLCBjaHVuayA9PiB7XG4gICAgICAgIHJlc3BvbnNlRGF0YS5wdXNoKGNodW5rKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXNwb25zZS5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJyZXNwb25zZSBlbmRlZDpcIiwgcmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGlmIChpc0JpbmFyeSkge1xuICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gQnVmZmVyLmNvbmNhdChyZXNwb25zZURhdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX19wYXJzZVJlc3BvbnNlKFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICByZXNwb25zZURhdGEsXG4gICAgICAgICAgICBlbmRwb2ludC5tZXRob2QsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIHNraXBKc29uUGFyc2luZ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmVzcG9uc2Uub24oXCJjbG9zZVwiLCBlID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgXCJwcm9ibGVtIHdpdGggQVBJIHJlcXVlc3QgZGV0YWlsZWQgc3RhY2t0cmFjZSBiZWxvdyBcIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXF1ZXN0Lm9uKFwiZXJyb3JcIiwgZSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcInByb2JsZW0gd2l0aCBBUEkgcmVxdWVzdCBkZXRhaWxlZCBzdGFja3RyYWNlIGJlbG93IFwiKTtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgY2FsbGJhY2soZSk7XG4gICAgfSk7XG4gIH1cblxuICBfX3BhcnNlUmVzcG9uc2UoaHR0cFJlc3BvbnNlLCBkYXRhLCBtZXRob2QsIGNhbGxiYWNrLCBza2lwSnNvblBhcnNpbmcpIHtcbiAgICBjb25zdCBpc0FycmF5T3JCdWZmZXIgPSBkYXRhIGluc3RhbmNlb2YgQXJyYXkgfHwgZGF0YSBpbnN0YW5jZW9mIEJ1ZmZlcjtcbiAgICBpZiAoIWlzQXJyYXlPckJ1ZmZlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBzaG91bGQgYmUgb2YgdHlwZSBBcnJheSBvciBCdWZmZXJcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzID0gaHR0cFJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgY29uc3QgaGVhZGVycyA9IGh0dHBSZXNwb25zZS5oZWFkZXJzO1xuXG4gICAgbGV0IHJlc3BvbnNlID0gbnVsbDtcbiAgICB2YXIgZXJyb3IgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgICAgIGVycm9yID0geyBtZXNzYWdlOiBcIlNlcnZlciBFcnJvclwiLCBzdGF0dXNDb2RlOiBzdGF0dXMgfTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGh0dHBSZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdID09PSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDQyOSkge1xuICAgICAgICAvLyA0MjkgZG9lcyBub3QgcmV0dXJuIGEgcGFyc2FibGUgYm9keVxuICAgICAgICBpZiAoIWhlYWRlcnNbXCJyZXRyeS1hZnRlclwiXSkge1xuICAgICAgICAgIC8vIHJldHJ5IGJhc2VkIG9uIGFsbG93ZWQgcGVyIHNlY29uZFxuICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJNaWxsaXMgPSBtZXRob2QgPT09IFwiUE9TVFwiID8gMTAwMCAvIDIgOiAxMDAwIC8gNTtcbiAgICAgICAgICBoZWFkZXJzW1wicmV0cnktYWZ0ZXJcIl0gPSByZXRyeUFmdGVyTWlsbGlzO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yID0geyBib2R5OiBkYXRhLmpvaW4oXCJcIikgfTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPj0gNDAwIHx8IHN0YXR1cyA8IDIwMCkge1xuICAgICAgICBlcnJvciA9IHsgYm9keTogSlNPTi5wYXJzZShkYXRhLmpvaW4oXCJcIikpLCBoZWFkZXJzIH07XG4gICAgICB9IGVsc2UgaWYgKG1ldGhvZCAhPT0gXCJERUxFVEVcIikge1xuICAgICAgICBpZiAoISFza2lwSnNvblBhcnNpbmcpIHtcbiAgICAgICAgICByZXNwb25zZSA9IGRhdGEuam9pbihcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YS5qb2luKFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHBhcnNlRXJyb3IpO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIFwiY291bGQgbm90IGNvbnZlcnQgQVBJIHJlc3BvbnNlIHRvIEpTT04sIGFib3ZlIGVycm9yIGlzIGlnbm9yZWQgYW5kIHJhdyBBUEkgcmVzcG9uc2UgaXMgcmV0dXJuZWQgdG8gY2xpZW50XCJcbiAgICAgICk7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIlJhdyBFcnJvciBtZXNzYWdlIGZyb20gQVBJIFwiKTtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBcIiR7ZGF0YX1cImApO1xuXG4gICAgICBlcnJvciA9IHtcbiAgICAgICAgc3RhdHVzOiBzdGF0dXMsXG4gICAgICAgIG1lc3NhZ2U6IFwiVGhlIEFQSSByZXNwb25zZSBjb3VsZCBub3QgYmUgcGFyc2VkLlwiLFxuICAgICAgICBib2R5OiBkYXRhLmpvaW4oXCJcIiksXG4gICAgICAgIHBhcnNlRXJyb3I6IHBhcnNlRXJyb3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBlcnJvci5zdGF0dXNDb2RlID0gc3RhdHVzO1xuICAgICAgZXJyb3IuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UpO1xuICAgIH1cbiAgfVxuXG4gIF9hZGRMaW1pdGVkQWNjZXNzTWVzc2FnZVRvRXJyb3JzKGNhbGxiYWNrLCBsaW1pdGVkQWNjZXNzU3RhdHVzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgaWYgKGVyciAmJiBlcnIuc3RhdHVzID09IGxpbWl0ZWRBY2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgZXJyLl9JTkZPXyA9XG4gICAgICAgICAgXCJUaGlzIGVuZHBvaW50IG1heSBuZWVkIGFjdGl2YXRpbmcgb24geW91ciBhY2NvdW50LiBQbGVhc2UgZW1haWwgc3VwcG9ydEBuZXhtby5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb25cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgZGF0YSk7XG4gICAgfTtcbiAgfVxuXG4gIGdldChwYXRoLCBwYXJhbXMsIGNhbGxiYWNrLCB1c2VKd3QgPSBmYWxzZSkge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGlmICh0eXBlb2YgcGFyYW1zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWxsYmFjayA9IHBhcmFtcztcbiAgICAgICAgcGFyYW1zID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICAgIGlmICghdXNlSnd0KSB7XG4gICAgICBwYXJhbXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBwYXJhbXNbXCJhcGlfc2VjcmV0XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXQ7XG4gICAgfVxuXG4gICAgcGF0aCA9IHBhdGggKyBcIj9cIiArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfTtcbiAgICBpZiAodXNlSnd0KSB7XG4gICAgICBoZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHt0aGlzLmNyZWRlbnRpYWxzLmdlbmVyYXRlSnd0KCl9YDtcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3QoeyBwYXRoOiBwYXRoLCBoZWFkZXJzIH0sIFwiR0VUXCIsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGRlbGV0ZShwYXRoLCBjYWxsYmFjaywgdXNlSnd0KSB7XG4gICAgbGV0IHBhcmFtcyA9IHt9O1xuICAgIGlmICghdXNlSnd0KSB7XG4gICAgICBwYXJhbXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBwYXJhbXNbXCJhcGlfc2VjcmV0XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXQ7XG4gICAgfVxuXG4gICAgcGF0aCA9IHBhdGggKyBcIj9cIiArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgdGhpcy5yZXF1ZXN0KHsgcGF0aDogcGF0aCB9LCBcIkRFTEVURVwiLCBjYWxsYmFjayk7XG4gIH1cblxuICBwb3N0RmlsZShwYXRoLCBvcHRpb25zLCBjYWxsYmFjaywgdXNlSnd0KSB7XG4gICAgbGV0IHFzID0ge307XG4gICAgaWYgKCF1c2VKd3QpIHtcbiAgICAgIHFzW1wiYXBpX2tleVwiXSA9IHRoaXMuY3JlZGVudGlhbHMuYXBpS2V5O1xuICAgICAgcXNbXCJhcGlfc2VjcmV0XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlTZWNyZXQ7XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKHFzKS5sZW5ndGgpIHtcbiAgICAgIGxldCBqb2luQ2hhciA9IFwiP1wiO1xuICAgICAgaWYgKHBhdGguaW5kZXhPZihqb2luQ2hhcikgIT09IC0xKSB7XG4gICAgICAgIGpvaW5DaGFyID0gXCImXCI7XG4gICAgICB9XG4gICAgICBwYXRoID0gcGF0aCArIGpvaW5DaGFyICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHFzKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlID0gb3B0aW9ucy5maWxlO1xuICAgIGRlbGV0ZSBvcHRpb25zLmZpbGU7IC8vIFdlIGRvbid0IHNlbmQgdGhpcyBhcyBtZXRhZGF0YVxuXG4gICAgY29uc3QgZm9ybURhdGEgPSB7fTtcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YVtcImZpbGVkYXRhXCJdID0ge1xuICAgICAgICB2YWx1ZTogZmlsZSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGZpbGVuYW1lOiBvcHRpb25zLmZpbGVuYW1lIHx8IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5pbmZvKSB7XG4gICAgICBmb3JtRGF0YS5pbmZvID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5pbmZvKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy51cmwpIHtcbiAgICAgIGZvcm1EYXRhLnVybCA9IG9wdGlvbnMudXJsO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdExpYi5wb3N0KFxuICAgICAge1xuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9cIiArIHRoaXMuaG9zdCArIHBhdGgsXG4gICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNyZWRlbnRpYWxzLmdlbmVyYXRlSnd0KCl9YFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgcG9zdChwYXRoLCBwYXJhbXMsIGNhbGxiYWNrLCB1c2VKd3QpIHtcbiAgICBsZXQgcXMgPSB7fTtcbiAgICBpZiAoIXVzZUp3dCkge1xuICAgICAgcXNbXCJhcGlfa2V5XCJdID0gdGhpcy5jcmVkZW50aWFscy5hcGlLZXk7XG4gICAgICBxc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcbiAgICB9XG5cbiAgICBsZXQgam9pbkNoYXIgPSBcIj9cIjtcbiAgICBpZiAocGF0aC5pbmRleE9mKGpvaW5DaGFyKSAhPT0gLTEpIHtcbiAgICAgIGpvaW5DaGFyID0gXCImXCI7XG4gICAgfVxuXG4gICAgcGF0aCA9IHBhdGggKyBqb2luQ2hhciArIHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShxcyk7XG5cbiAgICB0aGlzLnJlcXVlc3QoXG4gICAgICB7IHBhdGg6IHBhdGgsIGJvZHk6IHF1ZXJ5c3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpIH0sXG4gICAgICBcIlBPU1RcIixcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RVc2VRdWVyeVN0cmluZyhwYXRoLCBwYXJhbXMsIGNhbGxiYWNrLCB1c2VKd3QpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gICAgaWYgKCF1c2VKd3QpIHtcbiAgICAgIHBhcmFtc1tcImFwaV9rZXlcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaUtleTtcbiAgICAgIHBhcmFtc1tcImFwaV9zZWNyZXRcIl0gPSB0aGlzLmNyZWRlbnRpYWxzLmFwaVNlY3JldDtcbiAgICB9XG5cbiAgICBwYXRoID0gcGF0aCArIFwiP1wiICsgcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICB0aGlzLnJlcXVlc3QoeyBwYXRoOiBwYXRoIH0sIFwiUE9TVFwiLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSHR0cENsaWVudDtcbiJdfQ==

@@ -65,2 +65,6 @@ "use strict";

var _Media = require("./Media");
var _Media2 = _interopRequireDefault(_Media);
var _HttpClient = require("./HttpClient");

@@ -141,2 +145,3 @@

this.conversion = new _Conversion2.default(this.credentials, this.options);
this.media = new _Media2.default(this.credentials, this.options);

@@ -202,2 +207,2 @@ /**

module.exports = exports["default"];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9OZXhtby5qcyJdLCJuYW1lcyI6WyJqd3RHZW5lcmF0b3JJbnN0YW5jZSIsIk5leG1vIiwiY3JlZGVudGlhbHMiLCJvcHRpb25zIiwiZGVidWciLCJwYXJzZSIsImxvZ2dlciIsInVzZXJBZ2VudCIsInBhY2thZ2VEZXRhaWxzIiwicmVxdWlyZSIsImpvaW4iLCJfX2Rpcm5hbWUiLCJ2ZXJzaW9uIiwicHJvY2VzcyIsInJlcGxhY2UiLCJlIiwiY29uc29sZSIsIndhcm4iLCJhcHBlbmRUb1VzZXJBZ2VudCIsImh0dHBDbGllbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJob3N0IiwiYXBpIiwicmVzdCIsIm1lc3NhZ2UiLCJ2b2ljZSIsIm51bWJlciIsInZlcmlmeSIsIm51bWJlckluc2lnaHQiLCJhcHBsaWNhdGlvbnMiLCJhY2NvdW50IiwiY2FsbHMiLCJmaWxlcyIsImNvbnZlcnNpb24iLCJhcHAiLCJjbGFpbXMiLCJhcHBsaWNhdGlvbl9pZCIsInVuZGVmaW5lZCIsImFwcGxpY2F0aW9uSWQiLCJnZW5lcmF0ZUp3dCIsInByaXZhdGVLZXkiLCJCdWZmZXIiLCJleGlzdHNTeW5jIiwiRXJyb3IiLCJyZWFkRmlsZVN5bmMiLCJnZW5lcmF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUVBLElBQU1BLHVCQUF1Qiw0QkFBN0I7O0lBRU1DLEs7QUFDSjs7Ozs7Ozs7OztBQVVBLGlCQUFZQyxXQUFaLEVBQXFEO0FBQUEsUUFBNUJDLE9BQTRCLHVFQUFsQixFQUFFQyxPQUFPLEtBQVQsRUFBa0I7O0FBQUE7O0FBQ25ELFNBQUtGLFdBQUwsR0FBbUIsc0JBQVlHLEtBQVosQ0FBa0JILFdBQWxCLENBQW5C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QUFKLEVBQUk7O0FBQ3ZCLFVBQUlBLE9BQU9DLGNBQVAsS0FBMEJDLFNBQTlCLEVBQXlDO0FBQ3ZDRixlQUFPQyxjQUFQLEdBQXdCLEtBQUtuQyxXQUFMLENBQWlCcUMsYUFBekM7QUFDRDtBQUNELGFBQU90QyxNQUFNdUMsV0FBTixDQUFrQixLQUFLdEMsV0FBTCxDQUFpQnVDLFVBQW5DLEVBQStDTCxNQUEvQyxDQUFQO0FBQ0Q7Ozs7OztBQUdIOzs7Ozs7Ozs7OztBQVNBbkMsTUFBTXVDLFdBQU4sR0FBb0IsVUFBQ0MsVUFBRCxFQUFhTCxNQUFiLEVBQXdCO0FBQzFDLE1BQUksRUFBRUssc0JBQXNCQyxNQUF4QixDQUFKLEVBQXFDO0FBQ25DLFFBQUksQ0FBQyxhQUFHQyxVQUFILENBQWNGLFVBQWQsQ0FBTCxFQUFnQztBQUM5QixZQUFNLElBQUlHLEtBQUosYUFBbUJILFVBQW5CLG1CQUFOO0FBQ0QsS0FGRCxNQUVPO0FBQ0xBLG1CQUFhLGFBQUdJLFlBQUgsQ0FBZ0JKLFVBQWhCLENBQWI7QUFDRDtBQUNGO0FBQ0QsU0FBT3pDLHFCQUFxQjhDLFFBQXJCLENBQThCTCxVQUE5QixFQUEwQ0wsTUFBMUMsQ0FBUDtBQUNELENBVEQ7O2tCQVdlbkMsSyIsImZpbGUiOiJOZXhtby5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBDcmVkZW50aWFscyBmcm9tIFwiLi9DcmVkZW50aWFsc1wiO1xuaW1wb3J0IEp3dEdlbmVyYXRvciBmcm9tIFwiLi9Kd3RHZW5lcmF0b3JcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCIuL01lc3NhZ2VcIjtcbmltcG9ydCBWb2ljZSBmcm9tIFwiLi9Wb2ljZVwiO1xuaW1wb3J0IE51bWJlciBmcm9tIFwiLi9OdW1iZXJcIjtcbmltcG9ydCBWZXJpZnkgZnJvbSBcIi4vVmVyaWZ5XCI7XG5pbXBvcnQgTnVtYmVySW5zaWdodCBmcm9tIFwiLi9OdW1iZXJJbnNpZ2h0XCI7XG5pbXBvcnQgQXBwIGZyb20gXCIuL0FwcFwiO1xuaW1wb3J0IEFjY291bnQgZnJvbSBcIi4vQWNjb3VudFwiO1xuaW1wb3J0IENhbGxzUmVzb3VyY2UgZnJvbSBcIi4vQ2FsbHNSZXNvdXJjZVwiO1xuaW1wb3J0IEZpbGVzUmVzb3VyY2UgZnJvbSBcIi4vRmlsZXNSZXNvdXJjZVwiO1xuaW1wb3J0IENvbnZlcnNpb24gZnJvbSBcIi4vQ29udmVyc2lvblwiO1xuaW1wb3J0IEh0dHBDbGllbnQgZnJvbSBcIi4vSHR0cENsaWVudFwiO1xuaW1wb3J0IE51bGxMb2dnZXIgZnJvbSBcIi4vTnVsbExvZ2dlclwiO1xuaW1wb3J0IENvbnNvbGVMb2dnZXIgZnJvbSBcIi4vQ29uc29sZUxvZ2dlclwiO1xuXG5jb25zdCBqd3RHZW5lcmF0b3JJbnN0YW5jZSA9IG5ldyBKd3RHZW5lcmF0b3IoKTtcblxuY2xhc3MgTmV4bW8ge1xuICAvKipcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHMgLSBOZXhtbyBBUEkgY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWRlbnRpYWxzLmFwaUtleSAtIHRoZSBOZXhtbyBBUEkga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVkZW50aWFscy5hcGlTZWNyZXQgLSB0aGUgTmV4bW8gQVBJIHNlY3JldFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZGVidWcgLSBgdHJ1ZWAgdG8gdHVybiBvbiBkZWJ1ZyBsb2dnaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLmxvZ2dlciAtIFNldCBhIGN1c3RvbSBsb2dnZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmFwcGVuZFRvVXNlckFnZW50IC0gQSB2YWx1ZSB0byBhcHBlbmQgdG8gdGhlIHVzZXIgYWdlbnQuXG4gICAqICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIGEgYC9gXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjcmVkZW50aWFscywgb3B0aW9ucyA9IHsgZGVidWc6IGZhbHNlIH0pIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gQ3JlZGVudGlhbHMucGFyc2UoY3JlZGVudGlhbHMpO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAvLyBJZiBubyBsb2dnZXIgaGFzIGJlZW4gc3VwcGxpZWQgYnV0IGRlYnVnIGhhcyBiZWVuIHNldFxuICAgIC8vIGRlZmF1bHQgdG8gdXNpbmcgdGhlIENvbnNvbGVMb2dnZXJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5sb2dnZXIgJiYgdGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubG9nZ2VyID0gbmV3IENvbnNvbGVMb2dnZXIoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMubG9nZ2VyKSB7XG4gICAgICAvLyBTd2FsbG93IHRoZSBsb2dnaW5nXG4gICAgICB0aGlzLm9wdGlvbnMubG9nZ2VyID0gbmV3IE51bGxMb2dnZXIoKTtcbiAgICB9XG5cbiAgICBsZXQgdXNlckFnZW50ID0gXCJuZXhtby1ub2RlL1VOS05PV04gbm9kZS9VTktOT1dOXCI7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBwYWNrYWdlRGV0YWlscyA9IHJlcXVpcmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcInBhY2thZ2UuanNvblwiKSk7XG4gICAgICB1c2VyQWdlbnQgPSBgbmV4bW8tbm9kZS8ke1xuICAgICAgICBwYWNrYWdlRGV0YWlscy52ZXJzaW9uXG4gICAgICB9IG5vZGUvJHtwcm9jZXNzLnZlcnNpb24ucmVwbGFjZShcInZcIiwgXCJcIil9YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJDb3VsZCBub3QgbG9hZCBwYWNrYWdlIGRldGFpbHNcIik7XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy51c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hcHBlbmRUb1VzZXJBZ2VudCkge1xuICAgICAgdGhpcy5vcHRpb25zLnVzZXJBZ2VudCArPSBgICR7dGhpcy5vcHRpb25zLmFwcGVuZFRvVXNlckFnZW50fWA7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBsZWdhY3ksIGV2ZXJ5dGhpbmcgc2hvdWxkIHVzZSByZXN0IG9yIGFwaSBnb2luZyBmb3J3YXJkXG4gICAgdGhpcy5vcHRpb25zLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChcbiAgICAgIE9iamVjdC5hc3NpZ24oeyBob3N0OiBcInJlc3QubmV4bW8uY29tXCIgfSwgdGhpcy5vcHRpb25zKSxcbiAgICAgIHRoaXMuY3JlZGVudGlhbHNcbiAgICApO1xuXG4gICAgLy8gV2UgaGF2ZSB0d28gZGlmZmVyZW50IGhvc3RzLCBzbyB3ZSB1c2UgdHdvIGRpZmZlcmVudCBIdHRwQ2xpZW50c1xuICAgIHRoaXMub3B0aW9ucy5hcGkgPSBuZXcgSHR0cENsaWVudChcbiAgICAgIE9iamVjdC5hc3NpZ24oeyBob3N0OiBcImFwaS5uZXhtby5jb21cIiB9LCB0aGlzLm9wdGlvbnMpLFxuICAgICAgdGhpcy5jcmVkZW50aWFsc1xuICAgICk7XG4gICAgdGhpcy5vcHRpb25zLnJlc3QgPSBuZXcgSHR0cENsaWVudChcbiAgICAgIE9iamVjdC5hc3NpZ24oeyBob3N0OiBcInJlc3QubmV4bW8uY29tXCIgfSwgdGhpcy5vcHRpb25zKSxcbiAgICAgIHRoaXMuY3JlZGVudGlhbHNcbiAgICApO1xuXG4gICAgdGhpcy5tZXNzYWdlID0gbmV3IE1lc3NhZ2UodGhpcy5jcmVkZW50aWFscywgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLnZvaWNlID0gbmV3IFZvaWNlKHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5udW1iZXIgPSBuZXcgTnVtYmVyKHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy52ZXJpZnkgPSBuZXcgVmVyaWZ5KHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5udW1iZXJJbnNpZ2h0ID0gbmV3IE51bWJlckluc2lnaHQodGhpcy5jcmVkZW50aWFscywgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmFwcGxpY2F0aW9ucyA9IG5ldyBBcHAodGhpcy5jcmVkZW50aWFscywgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmFjY291bnQgPSBuZXcgQWNjb3VudCh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuY2FsbHMgPSBuZXcgQ2FsbHNSZXNvdXJjZSh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuZmlsZXMgPSBuZXcgRmlsZXNSZXNvdXJjZSh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuY29udmVyc2lvbiA9IG5ldyBDb252ZXJzaW9uKHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIG5leG1vLmFwcGxpY2F0aW9uc1xuICAgICAqL1xuICAgIHRoaXMuYXBwID0gdGhpcy5hcHBsaWNhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBKU09OIFdlYiBUb2tlbiAoSldUKS5cbiAgICpcbiAgICogVGhlIHByaXZhdGUga2V5IHVzZWQgdXBvbiBOZXhtbyBpbnN0YW5jZSBjb25zdHJ1Y3Rpb24gd2lsbCBiZSB1c2VkIHRvIHNpZ25cbiAgICogdGhlIEpXVC4gVGhlIGFwcGxpY2F0aW9uX2lkIHlvdSB1c2VkIHVwb24gTmV4bW8gaW5zdGFuY2UgY3JlYXRpb24gd2lsbCBiZVxuICAgKiBpbmNsdWRlZCBpbiB0aGUgY2xhaW1zIGZvciB0aGUgSldULCBob3dldmVyIHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGFzc2luZ1xuICAgKiBhbiBhcHBsaWNhdGlvbl9pZCBhcyBwYXJ0IG9mIHRoZSBjbGFpbXMuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjbGFpbXMgLSBuYW1lL3ZhbHVlIHBhaXIgY2xhaW1zIHRvIHNpZ24gd2l0aGluIHRoZSBKV1RcbiAgICpcbiAgICogQHJldHVybnMge1N0cmluZ30gdGhlIGdlbmVyYXRlZCB0b2tlblxuICAgKi9cbiAgZ2VuZXJhdGVKd3QoY2xhaW1zID0ge30pIHtcbiAgICBpZiAoY2xhaW1zLmFwcGxpY2F0aW9uX2lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsYWltcy5hcHBsaWNhdGlvbl9pZCA9IHRoaXMuY3JlZGVudGlhbHMuYXBwbGljYXRpb25JZDtcbiAgICB9XG4gICAgcmV0dXJuIE5leG1vLmdlbmVyYXRlSnd0KHRoaXMuY3JlZGVudGlhbHMucHJpdmF0ZUtleSwgY2xhaW1zKTtcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgSlNPTiBXZWIgVG9rZW4gKEpXVCkuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QnVmZmVyfSBwcml2YXRlS2V5IC0gdGhlIHBhdGggdG8gdGhlIHByaXZhdGUga2V5IGNlcnRpZmljYXRlXG4gKiAgICAgICAgICB0byBiZSB1c2VkIHdoZW4gc2lnbmluZyB0aGUgY2xhaW1zLlxuICogQHBhcmFtIHtPYmplY3R9IGNsYWltcyAtIG5hbWUvdmFsdWUgcGFpciBjbGFpbXMgdG8gc2lnbiB3aXRoaW4gdGhlIEpXVFxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBnZW5lcmF0ZWQgdG9rZW5cbiAqL1xuTmV4bW8uZ2VuZXJhdGVKd3QgPSAocHJpdmF0ZUtleSwgY2xhaW1zKSA9PiB7XG4gIGlmICghKHByaXZhdGVLZXkgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHByaXZhdGVLZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgXCIke3ByaXZhdGVLZXl9XCIgbm90IGZvdW5kLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcml2YXRlS2V5ID0gZnMucmVhZEZpbGVTeW5jKHByaXZhdGVLZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gand0R2VuZXJhdG9ySW5zdGFuY2UuZ2VuZXJhdGUocHJpdmF0ZUtleSwgY2xhaW1zKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5leG1vO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9OZXhtby5qcyJdLCJuYW1lcyI6WyJqd3RHZW5lcmF0b3JJbnN0YW5jZSIsIk5leG1vIiwiY3JlZGVudGlhbHMiLCJvcHRpb25zIiwiZGVidWciLCJwYXJzZSIsImxvZ2dlciIsInVzZXJBZ2VudCIsInBhY2thZ2VEZXRhaWxzIiwicmVxdWlyZSIsImpvaW4iLCJfX2Rpcm5hbWUiLCJ2ZXJzaW9uIiwicHJvY2VzcyIsInJlcGxhY2UiLCJlIiwiY29uc29sZSIsIndhcm4iLCJhcHBlbmRUb1VzZXJBZ2VudCIsImh0dHBDbGllbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJob3N0IiwiYXBpIiwicmVzdCIsIm1lc3NhZ2UiLCJ2b2ljZSIsIm51bWJlciIsInZlcmlmeSIsIm51bWJlckluc2lnaHQiLCJhcHBsaWNhdGlvbnMiLCJhY2NvdW50IiwiY2FsbHMiLCJmaWxlcyIsImNvbnZlcnNpb24iLCJtZWRpYSIsImFwcCIsImNsYWltcyIsImFwcGxpY2F0aW9uX2lkIiwidW5kZWZpbmVkIiwiYXBwbGljYXRpb25JZCIsImdlbmVyYXRlSnd0IiwicHJpdmF0ZUtleSIsIkJ1ZmZlciIsImV4aXN0c1N5bmMiLCJFcnJvciIsInJlYWRGaWxlU3luYyIsImdlbmVyYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsNEJBQTdCOztJQUVNQyxLO0FBQ0o7Ozs7Ozs7Ozs7QUFVQSxpQkFBWUMsV0FBWixFQUFxRDtBQUFBLFFBQTVCQyxPQUE0Qix1RUFBbEIsRUFBRUMsT0FBTyxLQUFULEVBQWtCOztBQUFBOztBQUNuRCxTQUFLRixXQUFMLEdBQW1CLHNCQUFZRyxLQUFaLENB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QUFLaUMsR0FBTCxHQUFXLEtBQUtOLFlBQWhCO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBWXlCO0FBQUEsVUFBYk8sTUFBYSx1RUFBSixFQUFJOztBQUN2QixVQUFJQSxPQUFPQyxjQUFQLEtBQTBCQyxTQUE5QixFQUF5QztBQUN2Q0YsZUFBT0MsY0FBUCxHQUF3QixLQUFLcEMsV0FBTCxDQUFpQnNDLGFBQXpDO0FBQ0Q7QUFDRCxhQUFPdkMsTUFBTXdDLFdBQU4sQ0FBa0IsS0FBS3ZDLFdBQUwsQ0FBaUJ3QyxVQUFuQyxFQUErQ0wsTUFBL0MsQ0FBUDtBQUNEOzs7Ozs7QUFHSDs7Ozs7Ozs7Ozs7QUFTQXBDLE1BQU13QyxXQUFOLEdBQW9CLFVBQUNDLFVBQUQsRUFBYUwsTUFBYixFQUF3QjtBQUMxQyxNQUFJLEVBQUVLLHNCQUFzQkMsTUFBeEIsQ0FBSixFQUFxQztBQUNuQyxRQUFJLENBQUMsYUFBR0MsVUFBSCxDQUFjRixVQUFkLENBQUwsRUFBZ0M7QUFDOUIsWUFBTSxJQUFJRyxLQUFKLGFBQW1CSCxVQUFuQixtQkFBTjtBQUNELEtBRkQsTUFFTztBQUNMQSxtQkFBYSxhQUFHSSxZQUFILENBQWdCSixVQUFoQixDQUFiO0FBQ0Q7QUFDRjtBQUNELFNBQU8xQyxxQkFBcUIrQyxRQUFyQixDQUE4QkwsVUFBOUIsRUFBMENMLE1BQTFDLENBQVA7QUFDRCxDQVREOztrQkFXZXBDLEsiLCJmaWxlIjoiTmV4bW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgQ3JlZGVudGlhbHMgZnJvbSBcIi4vQ3JlZGVudGlhbHNcIjtcbmltcG9ydCBKd3RHZW5lcmF0b3IgZnJvbSBcIi4vSnd0R2VuZXJhdG9yXCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwiLi9NZXNzYWdlXCI7XG5pbXBvcnQgVm9pY2UgZnJvbSBcIi4vVm9pY2VcIjtcbmltcG9ydCBOdW1iZXIgZnJvbSBcIi4vTnVtYmVyXCI7XG5pbXBvcnQgVmVyaWZ5IGZyb20gXCIuL1ZlcmlmeVwiO1xuaW1wb3J0IE51bWJlckluc2lnaHQgZnJvbSBcIi4vTnVtYmVySW5zaWdodFwiO1xuaW1wb3J0IEFwcCBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCBBY2NvdW50IGZyb20gXCIuL0FjY291bnRcIjtcbmltcG9ydCBDYWxsc1Jlc291cmNlIGZyb20gXCIuL0NhbGxzUmVzb3VyY2VcIjtcbmltcG9ydCBGaWxlc1Jlc291cmNlIGZyb20gXCIuL0ZpbGVzUmVzb3VyY2VcIjtcbmltcG9ydCBDb252ZXJzaW9uIGZyb20gXCIuL0NvbnZlcnNpb25cIjtcbmltcG9ydCBNZWRpYSBmcm9tIFwiLi9NZWRpYVwiO1xuaW1wb3J0IEh0dHBDbGllbnQgZnJvbSBcIi4vSHR0cENsaWVudFwiO1xuaW1wb3J0IE51bGxMb2dnZXIgZnJvbSBcIi4vTnVsbExvZ2dlclwiO1xuaW1wb3J0IENvbnNvbGVMb2dnZXIgZnJvbSBcIi4vQ29uc29sZUxvZ2dlclwiO1xuXG5jb25zdCBqd3RHZW5lcmF0b3JJbnN0YW5jZSA9IG5ldyBKd3RHZW5lcmF0b3IoKTtcblxuY2xhc3MgTmV4bW8ge1xuICAvKipcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHMgLSBOZXhtbyBBUEkgY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWRlbnRpYWxzLmFwaUtleSAtIHRoZSBOZXhtbyBBUEkga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVkZW50aWFscy5hcGlTZWNyZXQgLSB0aGUgTmV4bW8gQVBJIHNlY3JldFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZGVidWcgLSBgdHJ1ZWAgdG8gdHVybiBvbiBkZWJ1ZyBsb2dnaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLmxvZ2dlciAtIFNldCBhIGN1c3RvbSBsb2dnZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmFwcGVuZFRvVXNlckFnZW50IC0gQSB2YWx1ZSB0byBhcHBlbmQgdG8gdGhlIHVzZXIgYWdlbnQuXG4gICAqICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIGEgYC9gXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjcmVkZW50aWFscywgb3B0aW9ucyA9IHsgZGVidWc6IGZhbHNlIH0pIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gQ3JlZGVudGlhbHMucGFyc2UoY3JlZGVudGlhbHMpO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAvLyBJZiBubyBsb2dnZXIgaGFzIGJlZW4gc3VwcGxpZWQgYnV0IGRlYnVnIGhhcyBiZWVuIHNldFxuICAgIC8vIGRlZmF1bHQgdG8gdXNpbmcgdGhlIENvbnNvbGVMb2dnZXJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5sb2dnZXIgJiYgdGhpcy5vcHRpb25zLmRlYnVnKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubG9nZ2VyID0gbmV3IENvbnNvbGVMb2dnZXIoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMubG9nZ2VyKSB7XG4gICAgICAvLyBTd2FsbG93IHRoZSBsb2dnaW5nXG4gICAgICB0aGlzLm9wdGlvbnMubG9nZ2VyID0gbmV3IE51bGxMb2dnZXIoKTtcbiAgICB9XG5cbiAgICBsZXQgdXNlckFnZW50ID0gXCJuZXhtby1ub2RlL1VOS05PV04gbm9kZS9VTktOT1dOXCI7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBwYWNrYWdlRGV0YWlscyA9IHJlcXVpcmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcInBhY2thZ2UuanNvblwiKSk7XG4gICAgICB1c2VyQWdlbnQgPSBgbmV4bW8tbm9kZS8ke1xuICAgICAgICBwYWNrYWdlRGV0YWlscy52ZXJzaW9uXG4gICAgICB9IG5vZGUvJHtwcm9jZXNzLnZlcnNpb24ucmVwbGFjZShcInZcIiwgXCJcIil9YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJDb3VsZCBub3QgbG9hZCBwYWNrYWdlIGRldGFpbHNcIik7XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy51c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5hcHBlbmRUb1VzZXJBZ2VudCkge1xuICAgICAgdGhpcy5vcHRpb25zLnVzZXJBZ2VudCArPSBgICR7dGhpcy5vcHRpb25zLmFwcGVuZFRvVXNlckFnZW50fWA7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBsZWdhY3ksIGV2ZXJ5dGhpbmcgc2hvdWxkIHVzZSByZXN0IG9yIGFwaSBnb2luZyBmb3J3YXJkXG4gICAgdGhpcy5vcHRpb25zLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChcbiAgICAgIE9iamVjdC5hc3NpZ24oeyBob3N0OiBcInJlc3QubmV4bW8uY29tXCIgfSwgdGhpcy5vcHRpb25zKSxcbiAgICAgIHRoaXMuY3JlZGVudGlhbHNcbiAgICApO1xuXG4gICAgLy8gV2UgaGF2ZSB0d28gZGlmZmVyZW50IGhvc3RzLCBzbyB3ZSB1c2UgdHdvIGRpZmZlcmVudCBIdHRwQ2xpZW50c1xuICAgIHRoaXMub3B0aW9ucy5hcGkgPSBuZXcgSHR0cENsaWVudChcbiAgICAgIE9iamVjdC5hc3NpZ24oeyBob3N0OiBcImFwaS5uZXhtby5jb21cIiB9LCB0aGlzLm9wdGlvbnMpLFxuICAgICAgdGhpcy5jcmVkZW50aWFsc1xuICAgICk7XG4gICAgdGhpcy5vcHRpb25zLnJlc3QgPSBuZXcgSHR0cENsaWVudChcbiAgICAgIE9iamVjdC5hc3NpZ24oeyBob3N0OiBcInJlc3QubmV4bW8uY29tXCIgfSwgdGhpcy5vcHRpb25zKSxcbiAgICAgIHRoaXMuY3JlZGVudGlhbHNcbiAgICApO1xuXG4gICAgdGhpcy5tZXNzYWdlID0gbmV3IE1lc3NhZ2UodGhpcy5jcmVkZW50aWFscywgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLnZvaWNlID0gbmV3IFZvaWNlKHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5udW1iZXIgPSBuZXcgTnVtYmVyKHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy52ZXJpZnkgPSBuZXcgVmVyaWZ5KHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5udW1iZXJJbnNpZ2h0ID0gbmV3IE51bWJlckluc2lnaHQodGhpcy5jcmVkZW50aWFscywgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmFwcGxpY2F0aW9ucyA9IG5ldyBBcHAodGhpcy5jcmVkZW50aWFscywgdGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmFjY291bnQgPSBuZXcgQWNjb3VudCh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuY2FsbHMgPSBuZXcgQ2FsbHNSZXNvdXJjZSh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuZmlsZXMgPSBuZXcgRmlsZXNSZXNvdXJjZSh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuY29udmVyc2lvbiA9IG5ldyBDb252ZXJzaW9uKHRoaXMuY3JlZGVudGlhbHMsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5tZWRpYSA9IG5ldyBNZWRpYSh0aGlzLmNyZWRlbnRpYWxzLCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBuZXhtby5hcHBsaWNhdGlvbnNcbiAgICAgKi9cbiAgICB0aGlzLmFwcCA9IHRoaXMuYXBwbGljYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgSlNPTiBXZWIgVG9rZW4gKEpXVCkuXG4gICAqXG4gICAqIFRoZSBwcml2YXRlIGtleSB1c2VkIHVwb24gTmV4bW8gaW5zdGFuY2UgY29uc3RydWN0aW9uIHdpbGwgYmUgdXNlZCB0byBzaWduXG4gICAqIHRoZSBKV1QuIFRoZSBhcHBsaWNhdGlvbl9pZCB5b3UgdXNlZCB1cG9uIE5leG1vIGluc3RhbmNlIGNyZWF0aW9uIHdpbGwgYmVcbiAgICogaW5jbHVkZWQgaW4gdGhlIGNsYWltcyBmb3IgdGhlIEpXVCwgaG93ZXZlciB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmdcbiAgICogYW4gYXBwbGljYXRpb25faWQgYXMgcGFydCBvZiB0aGUgY2xhaW1zLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gY2xhaW1zIC0gbmFtZS92YWx1ZSBwYWlyIGNsYWltcyB0byBzaWduIHdpdGhpbiB0aGUgSldUXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBnZW5lcmF0ZWQgdG9rZW5cbiAgICovXG4gIGdlbmVyYXRlSnd0KGNsYWltcyA9IHt9KSB7XG4gICAgaWYgKGNsYWltcy5hcHBsaWNhdGlvbl9pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGFpbXMuYXBwbGljYXRpb25faWQgPSB0aGlzLmNyZWRlbnRpYWxzLmFwcGxpY2F0aW9uSWQ7XG4gICAgfVxuICAgIHJldHVybiBOZXhtby5nZW5lcmF0ZUp3dCh0aGlzLmNyZWRlbnRpYWxzLnByaXZhdGVLZXksIGNsYWltcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIEpTT04gV2ViIFRva2VuIChKV1QpLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEJ1ZmZlcn0gcHJpdmF0ZUtleSAtIHRoZSBwYXRoIHRvIHRoZSBwcml2YXRlIGtleSBjZXJ0aWZpY2F0ZVxuICogICAgICAgICAgdG8gYmUgdXNlZCB3aGVuIHNpZ25pbmcgdGhlIGNsYWltcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjbGFpbXMgLSBuYW1lL3ZhbHVlIHBhaXIgY2xhaW1zIHRvIHNpZ24gd2l0aGluIHRoZSBKV1RcbiAqXG4gKiBAcmV0dXJucyB7U3RyaW5nfSB0aGUgZ2VuZXJhdGVkIHRva2VuXG4gKi9cbk5leG1vLmdlbmVyYXRlSnd0ID0gKHByaXZhdGVLZXksIGNsYWltcykgPT4ge1xuICBpZiAoIShwcml2YXRlS2V5IGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhwcml2YXRlS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIFwiJHtwcml2YXRlS2V5fVwiIG5vdCBmb3VuZC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpdmF0ZUtleSA9IGZzLnJlYWRGaWxlU3luYyhwcml2YXRlS2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGp3dEdlbmVyYXRvckluc3RhbmNlLmdlbmVyYXRlKHByaXZhdGVLZXksIGNsYWltcyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOZXhtbztcbiJdfQ==
{
"name": "nexmo",
"author": "nexmo",
"version": "2.1.1",
"version": "2.2.0",
"main": "lib/Nexmo",

@@ -69,2 +69,3 @@ "keywords": [

"jsonwebtoken": "^7.1.9",
"request": "^2.83.0",
"uuid": "^2.0.2"

@@ -71,0 +72,0 @@ },

@@ -53,3 +53,5 @@ # Nexmo Client Library for Node.js [![build status](https://secure.travis-ci.org/Nexmo/nexmo-node.png)](http://travis-ci.org/Nexmo/nexmo-node)

warn: function() {args...}
}
},
// Set a custom timeout for requests to Nexmo in milliseconds. Defaults to the standard for Node http requests, which is 120,000 ms.
timeout: integer
}

@@ -514,2 +516,58 @@ ```

## Creating your own requests
> !!!IMPORTANT!!! This section uses internal APIs and should not be relied on. We make no guarantees that the interface is stable. Relying on these methods is not recommended for production applications
For endpoints that are not yet implemented, you can use the Nexmo HTTP Client to
make requests with the correct authentication method.
In these examples, we assume that you've created a `nexmo` instance as follows:
```javascript
var nexmo = new Nexmo({
apiKey: 'API_KEY',
apiSecret: 'API_SECRET',
applicationId: 'APPLICATION_ID',
privateKey: './private.key',
});
```
* If your API endpoint is on `api.nexmo.com`, use the `nexmo.options.api` object.
* If your API endpoint is on `rest.nexmo.com`, use the `nexmo.options.rest` object.
Both of these objects expose the following methods:
* `get(path, params, callback, useJwt)` (`params` is the query string to use)
* `post(path, params, callback, useJwt)` (`params` is the POST body to send)
* `postUseQueryString(path, params, callback, useJwt)` (`params` is the query string to use)
* `delete(path, callback, useJwt)`
To make a request to `api.nexmo.com/v1/calls?status=rejected`:
```javascript
nexmo.options.api.get(
"/v1/calls",
{"status": "rejected"},
function(err, data){
console.log(err);
console.log(data);
},
true // Use JWT for authentication
);
```
To make a request to `rest.nexmo.com/sms/json?from=Demo&to=447700900000&text=Testing`:
```javascript
nexmo.options.rest.postUseQueryString(
"/sms/json",
{"from": "Demo", "to": "447700900000", "text": "Testing"},
function(err, data){
console.log(err);
console.log(data);
},
false // Don't use JWT, fall back to API key/secret
);
```
## API Coverage

@@ -563,2 +621,9 @@

* [x] Update
* Media
* [x] Upload
* [x] Download
* [x] Search
* [x] Get
* [x] Update
* [x] Delete
* Voice (Deprecated)

@@ -565,0 +630,0 @@ * [x] Outbound Calls

import Account from "../lib/Account";
import Credentials from "../lib/Credentials";
import HttpClient from "../lib/HttpClient";
import NullLogger from "../lib/ConsoleLogger.js";
import { expect, sinon, TestUtils } from "./NexmoTestUtils";
import ResourceTestHelper from "./ResourceTestHelper";
import NexmoStub from "./NexmoStub";
describe("Account", function() {
beforeEach(function() {
this.httpClientStub = TestUtils.getHttpClient();
sinon.stub(this.httpClientStub, "request");
this.account = new Account(TestUtils.getCredentials(), {
rest: this.httpClientStub
});
});
import sinon from "sinon";
import chai, { expect } from "chai";
import sinonChai from "sinon-chai";
chai.use(sinonChai);
describe("checkBalance", function() {
it("should call the correct endpoint", function() {
return expect(this.account)
.method("checkBalance")
.to.get.url("/account/get-balance");
});
});
var accountAPIs = {
checkBalance: "checkBalance",
changePassword: "updatePassword",
changeMoCallbackUrl: "updateSMSCallback",
changeDrCallbackUrl: "updateDeliveryReceiptCallback"
};
describe("Account Object", function() {
it("should implement all v1 APIs", function() {
NexmoStub.checkAllFunctionsAreDefined(accountAPIs, Account);
describe("updatePassword", function() {
it("should call the correct endpoint", function() {
return expect(this.account)
.method("updatePassword")
.withParams("example_password")
.to.post.to.url("/account/settings?newSecret=example_password");
});
});
it("should proxy the function call to the underlying `nexmo` object", function() {
NexmoStub.checkAllFunctionsAreCalled(accountAPIs, Account);
describe("updateSMSCallback", function() {
it("should call the correct endpoint", function() {
return expect(this.account)
.method("updateSMSCallback")
.withParams("http://example.com/sms_callback")
.to.post.to.url(
"/account/settings?moCallBackUrl=http%3A%2F%2Fexample.com%2Fsms_callback"
);
});
});
});
describe("Account", function() {
beforeEach(function() {
var creds = Credentials.parse({
apiKey: "myKey",
apiSecret: "mySecret"
describe("updateDeliveryReceiptCallback", function() {
it("should call the correct endpoint", function() {
return expect(this.account)
.method("updateDeliveryReceiptCallback")
.withParams("http://example.com/dr_callback")
.to.post.to.url(
"/account/settings?drCallBackUrl=http%3A%2F%2Fexample.com%2Fdr_callback"
);
});
this.httpClientStub = new HttpClient(
{
logger: new NullLogger()
},
creds
);
sinon.stub(this.httpClientStub, "request");
var options = {
rest: this.httpClientStub
};
this.account = new Account(creds, options);
});
describe("topUp", function() {
it("should call the correct endpoint", function(done) {
this.httpClientStub.request.yields(null, {});
var expectedRequestArgs = ResourceTestHelper.requestArgsMatch({
path: "/account/top-up?trx=ABC123"
});
this.account.topUp(
"ABC123",
function(err, data) {
expect(this.httpClientStub.request).to.have.been.calledWith(
sinon.match(expectedRequestArgs)
);
done();
}.bind(this)
);
it("should call the correct endpoint", function() {
return expect(this.account)
.method("topUp")
.withParams("ABC123")
.to.post.to.url("/account/top-up?trx=ABC123");
});

@@ -82,3 +68,3 @@

this.httpClientStub.request.yields(null, mockData);
this.account.topUp("trx-123", function(err, data) {
this.account.topUp("trx-123", (err, data) => {
expect(err).to.eql(null);

@@ -98,3 +84,3 @@ expect(data).to.eql(mockData);

this.httpClientStub.request.yields(mockData, null);
this.account.topUp("trx-123", function(err, data) {
this.account.topUp("trx-123", (err, data) => {
expect(err).to.eql(mockData);

@@ -101,0 +87,0 @@ expect(data).to.eql(null);

@@ -192,2 +192,35 @@ import sinon from "sinon";

it("should be possible to set the timeout", function() {
var mock = sinon.mock(fakeHttp);
mock
.expects("request")
.once()
.withArgs({
headers: defaultHeaders,
host: "api.nexmo.com",
method: "POST",
path: "/api",
port: 443,
timeout: 5000
})
.returns(fakeRequest);
var client = new HttpClient({
https: fakeHttp,
logger: logger,
timeout: 5000
});
client.request(
{
host: "api.nexmo.com",
path: "/api"
},
"POST",
{
some: "data"
}
);
});
it("should not override the method when method and callback are undefined", function() {

@@ -368,2 +401,13 @@ var mock = sinon.mock(fakeHttp);

it("should not error with invalid JSON if parsing is disabled", function() {
var callback = sinon.spy();
const response = {
statusCode: 200,
headers: { "content-type": "application/json" }
};
const data = "not_json";
client.__parseResponse(response, [data], "GET", callback, true);
expect(callback).was.calledWith(null, data);
});
it("should parse binary data", function() {

@@ -370,0 +414,0 @@ var callback = sinon.spy();

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc