UNPKG

15.8 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
9var _index = require("./index");
10
11var _index2 = _interopRequireDefault(_index);
12
13var _Utils = require("./Utils");
14
15var _Utils2 = _interopRequireDefault(_Utils);
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20
21/**
22 * Provides access to the `events` resource.
23 */
24var Events = function () {
25 _createClass(Events, null, [{
26 key: "PATH",
27
28 /**
29 * The path to the `events` resource.
30 */
31 get: function get() {
32 return "/v0.1/conversations/{conversation_uuid}/events";
33 }
34
35 /**
36 * Creates a new Events instance.
37 *
38 * @param {Credentials} creds - Credentials used when interacting with the Nexmo API.
39 * @param {Object} options - additional options for the class.
40 */
41
42 }]);
43
44 function Events(creds, options) {
45 _classCallCheck(this, Events);
46
47 this.creds = creds;
48 this.options = options;
49 }
50
51 /**
52 * Creates an event in a conversation.
53 *
54 * @param {string} conversationId - The unique identifier for the conversation
55 * @param {Object} params - Parameters used when adding an event to the conversation. See https://developer.nexmo.com/api/conversation#createEvent for more information.
56 * @param {function} callback - function to be called when the request completes.
57 */
58
59
60 _createClass(Events, [{
61 key: "create",
62 value: function create(conversationId, params, callback) {
63 params = JSON.stringify(params);
64
65 var config = {
66 host: this.options.host || "api.nexmo.com",
67 path: Events.PATH.replace("{conversation_uuid}", conversationId),
68 method: "POST",
69 body: params,
70 headers: {
71 "Content-Type": "application/json",
72 Authorization: "Bearer " + this.creds.generateJwt()
73 }
74 };
75 this.options.httpClient.request(config, callback);
76 }
77
78 /**
79 * Get an existing event.
80 *
81 * @param {string} conversationId - The unique identifier for the conversation
82 * @param {string|object} query - The unique identifier for the event to retrieve
83 * or a set of filter parameters for the query. For more information
84 * see https://developer.nexmo.com/api/conversation#getEvents
85 * @param {function} callback - function to be called when the request completes.
86 */
87
88 }, {
89 key: "get",
90 value: function get(conversationId, query, callback) {
91 var config = {
92 host: this.options.host || "api.nexmo.com",
93 path: _Utils2.default.createPathWithQuery(Events.PATH.replace("{conversation_uuid}", conversationId), query),
94 method: "GET",
95 body: undefined,
96 headers: {
97 "Content-Type": "application/json",
98 Authorization: "Bearer " + this.creds.generateJwt()
99 }
100 };
101 this.options.httpClient.request(config, callback);
102 }
103
104 /**
105 * Get next page of events for a conversation.
106 *
107 * @param {object} response - The response from a paginated events list
108 * see https://ea.developer.nexmo.com/api/conversation#getEvents
109 * @param {function} callback - function to be called when the request completes.
110 */
111
112 }, {
113 key: "next",
114 value: function next(response, callback) {
115 if (response._links.next) {
116 var conversationId = response._links.next.href.match(/CON-[^/]*/g);
117 this.get(conversationId, _Utils2.default.getQuery(response._links.next.href), callback);
118 } else {
119 var error = new Error("The response doesn't have a next page.");
120 callback(error, null);
121 }
122 }
123
124 /**
125 * Get previous page of events for a conversation.
126 *
127 * @param {object} response - The response from a paginated events list
128 * see https://ea.developer.nexmo.com/api/conversation#getEvents
129 * @param {function} callback - function to be called when the request completes.
130 */
131
132 }, {
133 key: "prev",
134 value: function prev(response, callback) {
135 if (response._links.prev) {
136 var conversationId = response._links.prev.href.match(/CON-[^/]*/g);
137 this.get(conversationId, _Utils2.default.getQuery(response._links.prev.href), callback);
138 } else {
139 var error = new Error("The response doesn't have a previous page.");
140 callback(error, null);
141 }
142 }
143
144 /**
145 * Deleta an existing event.
146 *
147 * @param {string} conversationId- The unique identifier for the conversation to delete the event from.
148 * @param {string} eventId - The unique identifier for the event to delete.
149 * @param {function} callback - function to be called when the request completes.
150 */
151
152 }, {
153 key: "delete",
154 value: function _delete(conversationId, eventId, callback) {
155 var config = {
156 host: this.options.host || "api.nexmo.com",
157 path: Events.PATH.replace("{conversation_uuid}", conversationId) + "/" + eventId,
158 method: "DELETE",
159 headers: {
160 "Content-Type": "application/json",
161 Authorization: "Bearer " + this.creds.generateJwt()
162 }
163 };
164
165 this.options.httpClient.request(config, callback);
166 }
167 }]);
168
169 return Events;
170}();
171
172exports.default = Events;
173module.exports = exports["default"];
174//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FdmVudHMuanMiXSwibmFtZXMiOlsiRXZlbnRzIiwiY3JlZHMiLCJvcHRpb25zIiwiY29udmVyc2F0aW9uSWQiLCJwYXJhbXMiLCJjYWxsYmFjayIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25maWciLCJob3N0IiwicGF0aCIsIlBBVEgiLCJyZXBsYWNlIiwibWV0aG9kIiwiYm9keSIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwiZ2VuZXJhdGVKd3QiLCJodHRwQ2xpZW50IiwicmVxdWVzdCIsInF1ZXJ5IiwiY3JlYXRlUGF0aFdpdGhRdWVyeSIsInVuZGVmaW5lZCIsInJlc3BvbnNlIiwiX2xpbmtzIiwibmV4dCIsImhyZWYiLCJtYXRjaCIsImdldCIsImdldFF1ZXJ5IiwiZXJyb3IiLCJFcnJvciIsInByZXYiLCJldmVudElkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7Ozs7O0FBRUE7OztJQUdNQSxNOzs7O0FBQ0o7Ozt3QkFHa0I7QUFDaEIsYUFBTyxnREFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7QUFNQSxrQkFBWUMsS0FBWixFQUFtQkMsT0FBbkIsRUFBNEI7QUFBQTs7QUFDMUIsU0FBS0QsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7OzJCQU9PQyxjLEVBQWdCQyxNLEVBQVFDLFEsRUFBVTtBQUN2Q0QsZUFBU0UsS0FBS0MsU0FBTCxDQUFlSCxNQUFmLENBQVQ7O0FBRUEsVUFBSUksU0FBUztBQUNYQyxjQUFNLEtBQUtQLE9BQUwsQ0FBYU8sSUFBYixJQUFxQixlQURoQjtBQUVYQyxjQUFNVixPQUFPVyxJQUFQLENBQVlDLE9BQVosQ0FBb0IscUJBQXBCLEVBQTJDVCxjQUEzQyxDQUZLO0FBR1hVLGdCQUFRLE1BSEc7QUFJWEMsY0FBTVYsTUFKSztBQUtYVyxpQkFBUztBQUNQLDBCQUFnQixrQkFEVDtBQUVQQyxxQ0FBeUIsS0FBS2YsS0FBTCxDQUFXZ0IsV0FBWDtBQUZsQjtBQUxFLE9BQWI7QUFVQSxXQUFLZixPQUFMLENBQWFnQixVQUFiLENBQXdCQyxPQUF4QixDQUFnQ1gsTUFBaEMsRUFBd0NILFFBQXhDO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozt3QkFVSUYsYyxFQUFnQmlCLEssRUFBT2YsUSxFQUFVO0FBQ25DLFVBQUlHLFNBQVM7QUFDWEMsY0FBTSxLQUFLUCxPQUFMLENBQWFPLElBQWIsSUFBcUIsZUFEaEI7QUFFWEMsY0FBTSxnQkFBTVcsbUJBQU4sQ0FDSnJCLE9BQU9XLElBQVAsQ0FBWUMsT0FBWixDQUFvQixxQkFBcEIsRUFBMkNULGNBQTNDLENBREksRUFFSmlCLEtBRkksQ0FGSztBQU1YUCxnQkFBUSxLQU5HO0FBT1hDLGNBQU1RLFNBUEs7QUFRWFAsaUJBQVM7QUFDUCwwQkFBZ0Isa0JBRFQ7QUFFUEMscUNBQXlCLEtBQUtmLEtBQUwsQ0FBV2dCLFdBQVg7QUFGbEI7QUFSRSxPQUFiO0FBYUEsV0FBS2YsT0FBTCxDQUFhZ0IsVUFBYixDQUF3QkMsT0FBeEIsQ0FBZ0NYLE1BQWhDLEVBQXdDSCxRQUF4QztBQUNEOztBQUVEOzs7Ozs7Ozs7O3lCQU9La0IsUSxFQUFVbEIsUSxFQUFVO0FBQ3ZCLFVBQUlrQixTQUFTQyxNQUFULENBQWdCQyxJQUFwQixFQUEwQjtBQUN4QixZQUFNdEIsaUJBQWlCb0IsU0FBU0MsTUFBVCxDQUFnQkMsSUFBaEIsQ0FBcUJDLElBQXJCLENBQTBCQyxLQUExQixDQUFnQyxZQUFoQyxDQUF2QjtBQUNBLGFBQUtDLEdBQUwsQ0FDRXpCLGNBREYsRUFFRSxnQkFBTTBCLFFBQU4sQ0FBZU4sU0FBU0MsTUFBVCxDQUFnQkMsSUFBaEIsQ0FBcUJDLElBQXBDLENBRkYsRUFHRXJCLFFBSEY7QUFLRCxPQVBELE1BT087QUFDTCxZQUFNeUIsUUFBUSxJQUFJQyxLQUFKLENBQVUsd0NBQVYsQ0FBZDtBQUNBMUIsaUJBQVN5QixLQUFULEVBQWdCLElBQWhCO0FBQ0Q7QUFDRjs7QUFFRDs7Ozs7Ozs7Ozt5QkFPS1AsUSxFQUFVbEIsUSxFQUFVO0FBQ3ZCLFVBQUlrQixTQUFTQyxNQUFULENBQWdCUSxJQUFwQixFQUEwQjtBQUN4QixZQUFNN0IsaUJBQWlCb0IsU0FBU0MsTUFBVCxDQUFnQlEsSUFBaEIsQ0FBcUJOLElBQXJCLENBQTBCQyxLQUExQixDQUFnQyxZQUFoQyxDQUF2QjtBQUNBLGFBQUtDLEdBQUwsQ0FDRXpCLGNBREYsRUFFRSxnQkFBTTBCLFFBQU4sQ0FBZU4sU0FBU0MsTUFBVCxDQUFnQlEsSUFBaEIsQ0FBcUJOLElBQXBDLENBRkYsRUFHRXJCLFFBSEY7QUFLRCxPQVBELE1BT087QUFDTCxZQUFNeUIsUUFBUSxJQUFJQyxLQUFKLENBQVUsNENBQVYsQ0FBZDtBQUNBMUIsaUJBQVN5QixLQUFULEVBQWdCLElBQWhCO0FBQ0Q7QUFDRjs7QUFFRDs7Ozs7Ozs7Ozs0QkFPTzNCLGMsRUFBZ0I4QixPLEVBQVM1QixRLEVBQVU7QUFDeEMsVUFBSUcsU0FBUztBQUNYQyxjQUFNLEtBQUtQLE9BQUwsQ0FBYU8sSUFBYixJQUFxQixlQURoQjtBQUVYQyxjQUFTVixPQUFPVyxJQUFQLENBQVlDLE9BQVosQ0FDUCxxQkFETyxFQUVQVCxjQUZPLENBQVQsU0FHSzhCLE9BTE07QUFNWHBCLGdCQUFRLFFBTkc7QUFPWEUsaUJBQVM7QUFDUCwwQkFBZ0Isa0JBRFQ7QUFFUEMscUNBQXlCLEtBQUtmLEtBQUwsQ0FBV2dCLFdBQVg7QUFGbEI7QUFQRSxPQUFiOztBQWFBLFdBQUtmLE9BQUwsQ0FBYWdCLFVBQWIsQ0FBd0JDLE9BQXhCLENBQWdDWCxNQUFoQyxFQUF3Q0gsUUFBeEM7QUFDRDs7Ozs7O2tCQUdZTCxNIiwiZmlsZSI6IkV2ZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBuZXhtbyBmcm9tIFwiLi9pbmRleFwiO1xuXG5pbXBvcnQgVXRpbHMgZnJvbSBcIi4vVXRpbHNcIjtcblxuLyoqXG4gKiBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGBldmVudHNgIHJlc291cmNlLlxuICovXG5jbGFzcyBFdmVudHMge1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGBldmVudHNgIHJlc291cmNlLlxuICAgKi9cbiAgc3RhdGljIGdldCBQQVRIKCkge1xuICAgIHJldHVybiBcIi92MC4xL2NvbnZlcnNhdGlvbnMve2NvbnZlcnNhdGlvbl91dWlkfS9ldmVudHNcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEV2ZW50cyBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZHMgLSBDcmVkZW50aWFscyB1c2VkIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgTmV4bW8gQVBJLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGNsYXNzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY3JlZHMsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmNyZWRzID0gY3JlZHM7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGV2ZW50IGluIGEgY29udmVyc2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udmVyc2F0aW9uSWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFBhcmFtZXRlcnMgdXNlZCB3aGVuIGFkZGluZyBhbiBldmVudCB0byB0aGUgY29udmVyc2F0aW9uLiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tL2FwaS9jb252ZXJzYXRpb24jY3JlYXRlRXZlbnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgY3JlYXRlKGNvbnZlcnNhdGlvbklkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcblxuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IEV2ZW50cy5QQVRILnJlcGxhY2UoXCJ7Y29udmVyc2F0aW9uX3V1aWR9XCIsIGNvbnZlcnNhdGlvbklkKSxcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jcmVkcy5nZW5lcmF0ZUp3dCgpfWBcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucy5odHRwQ2xpZW50LnJlcXVlc3QoY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGV4aXN0aW5nIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udmVyc2F0aW9uSWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBxdWVyeSAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGV2ZW50IHRvIHJldHJpZXZlXG4gICAqICAgICAgICAgICAgICAgb3IgYSBzZXQgb2YgZmlsdGVyIHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gRm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tL2FwaS9jb252ZXJzYXRpb24jZ2V0RXZlbnRzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cblxuICBnZXQoY29udmVyc2F0aW9uSWQsIHF1ZXJ5LCBjYWxsYmFjaykge1xuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IFV0aWxzLmNyZWF0ZVBhdGhXaXRoUXVlcnkoXG4gICAgICAgIEV2ZW50cy5QQVRILnJlcGxhY2UoXCJ7Y29udmVyc2F0aW9uX3V1aWR9XCIsIGNvbnZlcnNhdGlvbklkKSxcbiAgICAgICAgcXVlcnlcbiAgICAgICksXG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBib2R5OiB1bmRlZmluZWQsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jcmVkcy5nZW5lcmF0ZUp3dCgpfWBcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucy5odHRwQ2xpZW50LnJlcXVlc3QoY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG5leHQgcGFnZSBvZiBldmVudHMgZm9yIGEgY29udmVyc2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2UgZnJvbSBhIHBhZ2luYXRlZCBldmVudHMgbGlzdFxuICAgKiAgICAgICAgICAgICAgIHNlZSBodHRwczovL2VhLmRldmVsb3Blci5uZXhtby5jb20vYXBpL2NvbnZlcnNhdGlvbiNnZXRFdmVudHNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuXG4gICAqL1xuICBuZXh0KHJlc3BvbnNlLCBjYWxsYmFjaykge1xuICAgIGlmIChyZXNwb25zZS5fbGlua3MubmV4dCkge1xuICAgICAgY29uc3QgY29udmVyc2F0aW9uSWQgPSByZXNwb25zZS5fbGlua3MubmV4dC5ocmVmLm1hdGNoKC9DT04tW14vXSovZyk7XG4gICAgICB0aGlzLmdldChcbiAgICAgICAgY29udmVyc2F0aW9uSWQsXG4gICAgICAgIFV0aWxzLmdldFF1ZXJ5KHJlc3BvbnNlLl9saW5rcy5uZXh0LmhyZWYpLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJUaGUgcmVzcG9uc2UgZG9lc24ndCBoYXZlIGEgbmV4dCBwYWdlLlwiKTtcbiAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHByZXZpb3VzIHBhZ2Ugb2YgZXZlbnRzIGZvciBhIGNvbnZlcnNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIGZyb20gYSBwYWdpbmF0ZWQgZXZlbnRzIGxpc3RcbiAgICogICAgICAgICAgICAgICBzZWUgaHR0cHM6Ly9lYS5kZXZlbG9wZXIubmV4bW8uY29tL2FwaS9jb252ZXJzYXRpb24jZ2V0RXZlbnRzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgcHJldihyZXNwb25zZSwgY2FsbGJhY2spIHtcbiAgICBpZiAocmVzcG9uc2UuX2xpbmtzLnByZXYpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gcmVzcG9uc2UuX2xpbmtzLnByZXYuaHJlZi5tYXRjaCgvQ09OLVteL10qL2cpO1xuICAgICAgdGhpcy5nZXQoXG4gICAgICAgIGNvbnZlcnNhdGlvbklkLFxuICAgICAgICBVdGlscy5nZXRRdWVyeShyZXNwb25zZS5fbGlua3MucHJldi5ocmVmKSxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVGhlIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIHBhZ2UuXCIpO1xuICAgICAgY2FsbGJhY2soZXJyb3IsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGEgYW4gZXhpc3RpbmcgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb252ZXJzYXRpb25JZC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udmVyc2F0aW9uIHRvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50SWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBldmVudCB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgZGVsZXRlKGNvbnZlcnNhdGlvbklkLCBldmVudElkLCBjYWxsYmFjaykge1xuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IGAke0V2ZW50cy5QQVRILnJlcGxhY2UoXG4gICAgICAgIFwie2NvbnZlcnNhdGlvbl91dWlkfVwiLFxuICAgICAgICBjb252ZXJzYXRpb25JZFxuICAgICAgKX0vJHtldmVudElkfWAsXG4gICAgICBtZXRob2Q6IFwiREVMRVRFXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jcmVkcy5nZW5lcmF0ZUp3dCgpfWBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5vcHRpb25zLmh0dHBDbGllbnQucmVxdWVzdChjb25maWcsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudHM7XG4iXX0=
\No newline at end of file