1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _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 |
|
9 | var _index = require("./index");
|
10 |
|
11 | var _index2 = _interopRequireDefault(_index);
|
12 |
|
13 | var _Utils = require("./Utils");
|
14 |
|
15 | var _Utils2 = _interopRequireDefault(_Utils);
|
16 |
|
17 | var _Members = require("./Members");
|
18 |
|
19 | var _Members2 = _interopRequireDefault(_Members);
|
20 |
|
21 | var _Events = require("./Events");
|
22 |
|
23 | var _Events2 = _interopRequireDefault(_Events);
|
24 |
|
25 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
26 |
|
27 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
28 |
|
29 | /**
|
30 | * Provides access to the `conversations` endpoint.
|
31 | */
|
32 | var Conversations = function () {
|
33 | _createClass(Conversations, null, [{
|
34 | key: "PATH",
|
35 | get: function get() {
|
36 | return "/v0.1/conversations";
|
37 | }
|
38 | }, {
|
39 | key: "V1_PATH",
|
40 | get: function get() {
|
41 | return "/v1/conversations";
|
42 | }
|
43 |
|
44 | /**
|
45 | * @param {Credentials} credentials
|
46 | * credentials to be used when interacting with the API.
|
47 | * @param {Object} options
|
48 | * Additional Conversations options.
|
49 | */
|
50 |
|
51 | }]);
|
52 |
|
53 | function Conversations(credentials) {
|
54 | var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
55 |
|
56 | _classCallCheck(this, Conversations);
|
57 |
|
58 | this.creds = credentials;
|
59 | this.options = options;
|
60 |
|
61 | /**
|
62 | * @type Members
|
63 | */
|
64 | this.members = new _Members2.default(this.creds, this.options);
|
65 |
|
66 | /**
|
67 | * @type Events
|
68 | */
|
69 | this.events = new _Events2.default(this.creds, this.options);
|
70 | }
|
71 |
|
72 | /**
|
73 | * Create a new conversation.
|
74 | *
|
75 | * @param {Object} params - Parameters used when creating the conversation. See https://ea.developer.nexmo.com/api/conversation#create-a-conversation for more information.
|
76 | * @param {function} callback - function to be called when the request completes.
|
77 | */
|
78 |
|
79 |
|
80 | _createClass(Conversations, [{
|
81 | key: "create",
|
82 | value: function create(params, callback) {
|
83 | params = JSON.stringify(params);
|
84 |
|
85 | var config = {
|
86 | host: this.options.host || "api.nexmo.com",
|
87 | path: Conversations.PATH,
|
88 | method: "POST",
|
89 | body: params,
|
90 | headers: {
|
91 | "Content-Type": "application/json",
|
92 | Authorization: "Bearer " + this.creds.generateJwt()
|
93 | }
|
94 | };
|
95 | this.options.httpClient.request(config, callback);
|
96 | }
|
97 |
|
98 | /**
|
99 | * Get an existing conversation.
|
100 | *
|
101 | * @param {string|object} query - The unique identifier for the conversation to retrieve
|
102 | * or a set of filter parameters for the query. For more information
|
103 | * see https://ea.developer.nexmo.com/api/conversation#retrieve-a-conversation
|
104 | * @param {function} callback - function to be called when the request completes.
|
105 | */
|
106 |
|
107 | }, {
|
108 | key: "get",
|
109 | value: function get(query, callback) {
|
110 | var config = {
|
111 | host: this.options.host || "api.nexmo.com",
|
112 | path: typeof query === "string" ? Conversations.PATH + "/" + query : _Utils2.default.createPathWithQuery(Conversations.PATH, query),
|
113 | method: "GET",
|
114 | body: undefined,
|
115 | headers: {
|
116 | "Content-Type": "application/json",
|
117 | Authorization: "Bearer " + this.creds.generateJwt()
|
118 | }
|
119 | };
|
120 | this.options.httpClient.request(config, callback);
|
121 | }
|
122 |
|
123 | /**
|
124 | * Get next page of conversations.
|
125 | *
|
126 | * @param {object} response - The response from a paginated conversations list
|
127 | * see https://ea.developer.nexmo.com/api/conversation#listConversations
|
128 | * @param {function} callback - function to be called when the request completes.
|
129 | */
|
130 |
|
131 | }, {
|
132 | key: "next",
|
133 | value: function next(response, callback) {
|
134 | if (response._links.next) {
|
135 | this.get(_Utils2.default.getQuery(response._links.next.href), callback);
|
136 | } else {
|
137 | var error = new Error("The response doesn't have a next page.");
|
138 | callback(error, null);
|
139 | }
|
140 | }
|
141 |
|
142 | /**
|
143 | * Get previous page of conversations.
|
144 | *
|
145 | * @param {object} response - The response from a paginated conversations list
|
146 | * see https://ea.developer.nexmo.com/api/conversation#listConversations
|
147 | * @param {function} callback - function to be called when the request completes.
|
148 | */
|
149 |
|
150 | }, {
|
151 | key: "prev",
|
152 | value: function prev(response, callback) {
|
153 | if (response._links.prev) {
|
154 | this.get(_Utils2.default.getQuery(response._links.prev.href), callback);
|
155 | } else {
|
156 | var error = new Error("The response doesn't have a previous page.");
|
157 | callback(error, null);
|
158 | }
|
159 | }
|
160 |
|
161 | /**
|
162 | * Update an existing conversation.
|
163 | *
|
164 | * @param {string} conversationId - The unique identifier for the conversation to update.
|
165 | * @param {Object} params - Parameters used when updating the conversation.
|
166 | * @param {function} callback - function to be called when the request completes.
|
167 | */
|
168 |
|
169 | }, {
|
170 | key: "update",
|
171 | value: function update(conversationId, params, callback) {
|
172 | params = JSON.stringify(params);
|
173 |
|
174 | var config = {
|
175 | host: this.options.host || "api.nexmo.com",
|
176 | path: Conversations.PATH + "/" + conversationId,
|
177 | method: "PUT",
|
178 | body: params,
|
179 | headers: {
|
180 | "Content-Type": "application/json",
|
181 | Authorization: "Bearer " + this.creds.generateJwt()
|
182 | }
|
183 | };
|
184 |
|
185 | this.options.httpClient.request(config, callback);
|
186 | }
|
187 |
|
188 | /**
|
189 | * Record an existing conversation.
|
190 | *
|
191 | * @param {string} conversationId - The unique identifier for the conversation to record.
|
192 | * @param {Object} params - Parameters used when recording the conversation.
|
193 | * @param {function} callback - function to be called when the request completes.
|
194 | */
|
195 |
|
196 | }, {
|
197 | key: "record",
|
198 | value: function record(conversationId, params, callback) {
|
199 | params = JSON.stringify(params);
|
200 |
|
201 | var config = {
|
202 | host: this.options.host || "api.nexmo.com",
|
203 | path: Conversations.V1_PATH + "/" + conversationId + "/record",
|
204 | method: "PUT",
|
205 | body: params,
|
206 | headers: {
|
207 | "Content-Type": "application/json",
|
208 | Authorization: "Bearer " + this.creds.generateJwt()
|
209 | }
|
210 | };
|
211 |
|
212 | this.options.httpClient.request(config, callback);
|
213 | }
|
214 |
|
215 | /**
|
216 | * Deleta an existing conversation.
|
217 | *
|
218 | * @param {string} conversationId - The unique identifier for the conversation to delete.
|
219 | * @param {function} callback - function to be called when the request completes.
|
220 | */
|
221 |
|
222 | }, {
|
223 | key: "delete",
|
224 | value: function _delete(conversationId, callback) {
|
225 | var config = {
|
226 | host: this.options.host || "api.nexmo.com",
|
227 | path: Conversations.PATH + "/" + conversationId,
|
228 | method: "DELETE",
|
229 | headers: {
|
230 | "Content-Type": "application/json",
|
231 | Authorization: "Bearer " + this.creds.generateJwt()
|
232 | }
|
233 | };
|
234 |
|
235 | this.options.httpClient.request(config, callback);
|
236 | }
|
237 | }]);
|
238 |
|
239 | return Conversations;
|
240 | }();
|
241 |
|
242 | exports.default = Conversations;
|
243 | module.exports = exports["default"];
|
244 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db252ZXJzYXRpb25zLmpzIl0sIm5hbWVzIjpbIkNvbnZlcnNhdGlvbnMiLCJjcmVkZW50aWFscyIsIm9wdGlvbnMiLCJjcmVkcyIsIm1lbWJlcnMiLCJldmVudHMiLCJwYXJhbXMiLCJjYWxsYmFjayIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25maWciLCJob3N0IiwicGF0aCIsIlBBVEgiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJnZW5lcmF0ZUp3dCIsImh0dHBDbGllbnQiLCJyZXF1ZXN0IiwicXVlcnkiLCJjcmVhdGVQYXRoV2l0aFF1ZXJ5IiwidW5kZWZpbmVkIiwicmVzcG9uc2UiLCJfbGlua3MiLCJuZXh0IiwiZ2V0IiwiZ2V0UXVlcnkiLCJocmVmIiwiZXJyb3IiLCJFcnJvciIsInByZXYiLCJjb252ZXJzYXRpb25JZCIsIlYxX1BBVEgiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQUVBOzs7O0FBRUE7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7OztBQUVBOzs7SUFHTUEsYTs7O3dCQUNjO0FBQ2hCLGFBQU8scUJBQVA7QUFDRDs7O3dCQUVvQjtBQUNuQixhQUFPLG1CQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7OztBQU1BLHlCQUFZQyxXQUFaLEVBQXVDO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUFBOztBQUNyQyxTQUFLQyxLQUFMLEdBQWFGLFdBQWI7QUFDQSxTQUFLQyxPQUFMLEdBQWVBLE9BQWY7O0FBRUE7OztBQUdBLFNBQUtFLE9BQUwsR0FBZSxzQkFBWSxLQUFLRCxLQUFqQixFQUF3QixLQUFLRCxPQUE3QixDQUFmOztBQUVBOzs7QUFHQSxTQUFLRyxNQUFMLEdBQWMscUJBQVcsS0FBS0YsS0FBaEIsRUFBdUIsS0FBS0QsT0FBNUIsQ0FBZDtBQUNEOztBQUVEOzs7Ozs7Ozs7OzJCQU1PSSxNLEVBQVFDLFEsRUFBVTtBQUN2QkQsZUFBU0UsS0FBS0MsU0FBTCxDQUFlSCxNQUFmLENB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RCxjQUFsQyxZQUZXO0FBR1huQixnQkFBUSxLQUhHO0FBSVhDLGNBQU1ULE1BSks7QUFLWFUsaUJBQVM7QUFDUCwwQkFBZ0Isa0JBRFQ7QUFFUEMscUNBQXlCLEtBQUtkLEtBQUwsQ0FBV2UsV0FBWDtBQUZsQjtBQUxFLE9BQWI7O0FBV0EsV0FBS2hCLE9BQUwsQ0FBYWlCLFVBQWIsQ0FBd0JDLE9BQXhCLENBQWdDVixNQUFoQyxFQUF3Q0gsUUFBeEM7QUFDRDs7QUFFRDs7Ozs7Ozs7OzRCQU1PMEIsYyxFQUFnQjFCLFEsRUFBVTtBQUMvQixVQUFJRyxTQUFTO0FBQ1hDLGNBQU0sS0FBS1QsT0FBTCxDQUFhUyxJQUFiLElBQXFCLGVBRGhCO0FBRVhDLGNBQVNaLGNBQWNhLElBQXZCLFNBQStCb0IsY0FGcEI7QUFHWG5CLGdCQUFRLFFBSEc7QUFJWEUsaUJBQVM7QUFDUCwwQkFBZ0Isa0JBRFQ7QUFFUEMscUNBQXlCLEtBQUtkLEtBQUwsQ0FBV2UsV0FBWDtBQUZsQjtBQUpFLE9BQWI7O0FBVUEsV0FBS2hCLE9BQUwsQ0FBYWlCLFVBQWIsQ0FBd0JDLE9BQXhCLENBQWdDVixNQUFoQyxFQUF3Q0gsUUFBeEM7QUFDRDs7Ozs7O2tCQUdZUCxhIiwiZmlsZSI6IkNvbnZlcnNhdGlvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG5leG1vIGZyb20gXCIuL2luZGV4XCI7XG5cbmltcG9ydCBVdGlscyBmcm9tIFwiLi9VdGlsc1wiO1xuXG5pbXBvcnQgTWVtYmVycyBmcm9tIFwiLi9NZW1iZXJzXCI7XG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL0V2ZW50c1wiO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYGNvbnZlcnNhdGlvbnNgIGVuZHBvaW50LlxuICovXG5jbGFzcyBDb252ZXJzYXRpb25zIHtcbiAgc3RhdGljIGdldCBQQVRIKCkge1xuICAgIHJldHVybiBcIi92MC4xL2NvbnZlcnNhdGlvbnNcIjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgVjFfUEFUSCgpIHtcbiAgICByZXR1cm4gXCIvdjEvY29udmVyc2F0aW9uc1wiO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqICAgIGNyZWRlbnRpYWxzIHRvIGJlIHVzZWQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBBUEkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqICAgIEFkZGl0aW9uYWwgQ29udmVyc2F0aW9ucyBvcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY3JlZGVudGlhbHMsIG9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuY3JlZHMgPSBjcmVkZW50aWFscztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUgTWVtYmVyc1xuICAgICAqL1xuICAgIHRoaXMubWVtYmVycyA9IG5ldyBNZW1iZXJzKHRoaXMuY3JlZHMsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBFdmVudHNcbiAgICAgKi9cbiAgICB0aGlzLmV2ZW50cyA9IG5ldyBFdmVudHModGhpcy5jcmVkcywgdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29udmVyc2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gUGFyYW1ldGVycyB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGNvbnZlcnNhdGlvbi4gU2VlIGh0dHBzOi8vZWEuZGV2ZWxvcGVyLm5leG1vLmNvbS9hcGkvY29udmVyc2F0aW9uI2NyZWF0ZS1hLWNvbnZlcnNhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuXG4gICAqL1xuICBjcmVhdGUocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHBhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICB2YXIgY29uZmlnID0ge1xuICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmhvc3QgfHwgXCJhcGkubmV4bW8uY29tXCIsXG4gICAgICBwYXRoOiBDb252ZXJzYXRpb25zLlBBVEgsXG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuaHR0cENsaWVudC5yZXF1ZXN0KGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBleGlzdGluZyBjb252ZXJzYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcXVlcnkgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb24gdG8gcmV0cmlldmVcbiAgICogICAgICAgICAgICAgICBvciBhIHNldCBvZiBmaWx0ZXIgcGFyYW1ldGVycyBmb3IgdGhlIHF1ZXJ5LiBGb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiAgICAgICAgICAgICAgIHNlZSBodHRwczovL2VhLmRldmVsb3Blci5uZXhtby5jb20vYXBpL2NvbnZlcnNhdGlvbiNyZXRyaWV2ZS1hLWNvbnZlcnNhdGlvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIGdldChxdWVyeSwgY2FsbGJhY2spIHtcbiAgICB2YXIgY29uZmlnID0ge1xuICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmhvc3QgfHwgXCJhcGkubmV4bW8uY29tXCIsXG4gICAgICBwYXRoOlxuICAgICAgICB0eXBlb2YgcXVlcnkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IGAke0NvbnZlcnNhdGlvbnMuUEFUSH0vJHtxdWVyeX1gXG4gICAgICAgICAgOiBVdGlscy5jcmVhdGVQYXRoV2l0aFF1ZXJ5KENvbnZlcnNhdGlvbnMuUEFUSCwgcXVlcnkpLFxuICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgYm9keTogdW5kZWZpbmVkLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuaHR0cENsaWVudC5yZXF1ZXN0KGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBuZXh0IHBhZ2Ugb2YgY29udmVyc2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIGZyb20gYSBwYWdpbmF0ZWQgY29udmVyc2F0aW9ucyBsaXN0XG4gICAqICAgICAgICAgICAgICAgc2VlIGh0dHBzOi8vZWEuZGV2ZWxvcGVyLm5leG1vLmNvbS9hcGkvY29udmVyc2F0aW9uI2xpc3RDb252ZXJzYXRpb25zXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgbmV4dChyZXNwb25zZSwgY2FsbGJhY2spIHtcbiAgICBpZiAocmVzcG9uc2UuX2xpbmtzLm5leHQpIHtcbiAgICAgIHRoaXMuZ2V0KFV0aWxzLmdldFF1ZXJ5KHJlc3BvbnNlLl9saW5rcy5uZXh0LmhyZWYpLCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVGhlIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSBhIG5leHQgcGFnZS5cIik7XG4gICAgICBjYWxsYmFjayhlcnJvciwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwcmV2aW91cyBwYWdlIG9mIGNvbnZlcnNhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBmcm9tIGEgcGFnaW5hdGVkIGNvbnZlcnNhdGlvbnMgbGlzdFxuICAgKiAgICAgICAgICAgICAgIHNlZSBodHRwczovL2VhLmRldmVsb3Blci5uZXhtby5jb20vYXBpL2NvbnZlcnNhdGlvbiNsaXN0Q29udmVyc2F0aW9uc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIHByZXYocmVzcG9uc2UsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHJlc3BvbnNlLl9saW5rcy5wcmV2KSB7XG4gICAgICB0aGlzLmdldChVdGlscy5nZXRRdWVyeShyZXNwb25zZS5fbGlua3MucHJldi5ocmVmKSwgY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcIlRoZSByZXNwb25zZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBwYWdlLlwiKTtcbiAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIGNvbnZlcnNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnZlcnNhdGlvbklkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udmVyc2F0aW9uIHRvIHVwZGF0ZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFBhcmFtZXRlcnMgdXNlZCB3aGVuIHVwZGF0aW5nIHRoZSBjb252ZXJzYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgdXBkYXRlKGNvbnZlcnNhdGlvbklkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcblxuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IGAke0NvbnZlcnNhdGlvbnMuUEFUSH0vJHtjb252ZXJzYXRpb25JZH1gLFxuICAgICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMub3B0aW9ucy5odHRwQ2xpZW50LnJlcXVlc3QoY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIGFuIGV4aXN0aW5nIGNvbnZlcnNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnZlcnNhdGlvbklkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udmVyc2F0aW9uIHRvIHJlY29yZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFBhcmFtZXRlcnMgdXNlZCB3aGVuIHJlY29yZGluZyB0aGUgY29udmVyc2F0aW9uLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIHJlY29yZChjb252ZXJzYXRpb25JZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHBhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICB2YXIgY29uZmlnID0ge1xuICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmhvc3QgfHwgXCJhcGkubmV4bW8uY29tXCIsXG4gICAgICBwYXRoOiBgJHtDb252ZXJzYXRpb25zLlYxX1BBVEh9LyR7Y29udmVyc2F0aW9uSWR9L3JlY29yZGAsXG4gICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jcmVkcy5nZW5lcmF0ZUp3dCgpfWBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5vcHRpb25zLmh0dHBDbGllbnQucmVxdWVzdChjb25maWcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGEgYW4gZXhpc3RpbmcgY29udmVyc2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udmVyc2F0aW9uSWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb24gdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIGRlbGV0ZShjb252ZXJzYXRpb25JZCwgY2FsbGJhY2spIHtcbiAgICB2YXIgY29uZmlnID0ge1xuICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmhvc3QgfHwgXCJhcGkubmV4bW8uY29tXCIsXG4gICAgICBwYXRoOiBgJHtDb252ZXJzYXRpb25zLlBBVEh9LyR7Y29udmVyc2F0aW9uSWR9YCxcbiAgICAgIG1ldGhvZDogXCJERUxFVEVcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNyZWRzLmdlbmVyYXRlSnd0KCl9YFxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLm9wdGlvbnMuaHR0cENsaWVudC5yZXF1ZXN0KGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbnZlcnNhdGlvbnM7XG4iXX0= |
\ | No newline at end of file |