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 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
20 |
|
21 | /**
|
22 | * Provides access to the `members` resource.
|
23 | */
|
24 | var Members = function () {
|
25 | _createClass(Members, null, [{
|
26 | key: "PATH",
|
27 |
|
28 | /**
|
29 | * The path to the `members` resource.
|
30 | */
|
31 | get: function get() {
|
32 | return "/v0.1/conversations/{conversation_uuid}/members";
|
33 | }
|
34 |
|
35 | /**
|
36 | * Creates a new Members.
|
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 Members(creds, options) {
|
45 | _classCallCheck(this, Members);
|
46 |
|
47 | this.creds = creds;
|
48 | this.options = options;
|
49 | }
|
50 |
|
51 | /**
|
52 | * Creates a member in a conversation.
|
53 | *
|
54 | * @param {string} conversationId - The unique identifier for the conversation
|
55 | * @param {Object} params - Parameters used when adding a member to the conversation. See https://ea.developer.nexmo.com/api/conversation#add-a-user-to-a-conversation for more information.
|
56 | * @param {function} callback - function to be called when the request completes.
|
57 | */
|
58 |
|
59 |
|
60 | _createClass(Members, [{
|
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: Members.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 | // backwards compatibility to 2.4.0-beta1. Remove for 3.0.0
|
79 |
|
80 | }, {
|
81 | key: "add",
|
82 | value: function add(conversationId, params, callback) {
|
83 | this.create(conversationId, params, callback);
|
84 | }
|
85 |
|
86 | /**
|
87 | * Get an existing member.
|
88 | *
|
89 | * @param {string} conversationId - The unique identifier for the conversation
|
90 | * @param {string|object} query - The unique identifier for the member to retrieve
|
91 | * or a set of filter parameters for the query. For more information
|
92 | * see https://ea.developer.nexmo.com/api/conversation#retrieve-members-of-a-conversation
|
93 | * @param {function} callback - function to be called when the request completes.
|
94 | */
|
95 |
|
96 | }, {
|
97 | key: "get",
|
98 | value: function get(conversationId, query, callback) {
|
99 | var config = {
|
100 | host: this.options.host || "api.nexmo.com",
|
101 | path: _Utils2.default.createPathWithQuery(Members.PATH.replace("{conversation_uuid}", conversationId), query),
|
102 | method: "GET",
|
103 | body: undefined,
|
104 | headers: {
|
105 | "Content-Type": "application/json",
|
106 | Authorization: "Bearer " + this.creds.generateJwt()
|
107 | }
|
108 | };
|
109 | this.options.httpClient.request(config, callback);
|
110 | }
|
111 |
|
112 | /**
|
113 | * Get next page of members for a conversation.
|
114 | *
|
115 | * @param {object} response - The response from a paginated members list
|
116 | * see https://ea.developer.nexmo.com/api/conversation#getMembers
|
117 | * @param {function} callback - function to be called when the request completes.
|
118 | */
|
119 |
|
120 | }, {
|
121 | key: "next",
|
122 | value: function next(response, callback) {
|
123 | if (response._links.next) {
|
124 | var conversationId = response._links.next.href.match(/CON-[^/]*/g);
|
125 | this.get(conversationId, _Utils2.default.getQuery(response._links.next.href), callback);
|
126 | } else {
|
127 | var error = new Error("The response doesn't have a next page.");
|
128 | callback(error, null);
|
129 | }
|
130 | }
|
131 |
|
132 | /**
|
133 | * Get previous page members for a conversation.
|
134 | *
|
135 | * @param {object} response - The response from a paginated members list
|
136 | * see https://ea.developer.nexmo.com/api/conversation#getMembers
|
137 | * @param {function} callback - function to be called when the request completes.
|
138 | */
|
139 |
|
140 | }, {
|
141 | key: "prev",
|
142 | value: function prev(response, callback) {
|
143 | if (response._links.prev) {
|
144 | var conversationId = response._links.prev.href.match(/CON-[^/]*/g);
|
145 | this.get(conversationId, _Utils2.default.getQuery(response._links.prev.href), callback);
|
146 | } else {
|
147 | var error = new Error("The response doesn't have a previous page.");
|
148 | callback(error, null);
|
149 | }
|
150 | }
|
151 |
|
152 | /**
|
153 | * Update an existing member.
|
154 | *
|
155 | * @param {string} conversationId - The unique identifier for the conversation to update the member in.
|
156 | * @param {string} memberId - The unique identifier for the member to update.
|
157 | * @param {Object} params - Parameters used when updating the member.
|
158 | * @param {function} callback - function to be called when the request completes.
|
159 | */
|
160 |
|
161 | }, {
|
162 | key: "update",
|
163 | value: function update(conversationId, memberId, params, callback) {
|
164 | params = JSON.stringify(params);
|
165 |
|
166 | var config = {
|
167 | host: this.options.host || "api.nexmo.com",
|
168 | path: Members.PATH.replace("{conversation_uuid}", conversationId) + "/" + memberId,
|
169 | method: "PUT",
|
170 | body: params,
|
171 | headers: {
|
172 | "Content-Type": "application/json",
|
173 | Authorization: "Bearer " + this.creds.generateJwt()
|
174 | }
|
175 | };
|
176 |
|
177 | this.options.httpClient.request(config, callback);
|
178 | }
|
179 |
|
180 | /**
|
181 | * Deleta an existing member.
|
182 | *
|
183 | * @param {string} conversationId- The unique identifier for the conversation to delete the member from.
|
184 | * @param {string} memberId - The unique identifier for the member to delete.
|
185 | * @param {function} callback - function to be called when the request completes.
|
186 | */
|
187 |
|
188 | }, {
|
189 | key: "delete",
|
190 | value: function _delete(conversationId, memberId, callback) {
|
191 | var config = {
|
192 | host: this.options.host || "api.nexmo.com",
|
193 | path: Members.PATH.replace("{conversation_uuid}", conversationId) + "/" + memberId,
|
194 | method: "DELETE",
|
195 | headers: {
|
196 | "Content-Type": "application/json",
|
197 | Authorization: "Bearer " + this.creds.generateJwt()
|
198 | }
|
199 | };
|
200 |
|
201 | this.options.httpClient.request(config, callback);
|
202 | }
|
203 | }]);
|
204 |
|
205 | return Members;
|
206 | }();
|
207 |
|
208 | exports.default = Members;
|
209 | module.exports = exports["default"];
|
210 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NZW1iZXJzLmpzIl0sIm5hbWVzIjpbIk1lbWJlcnMiLCJjcmVkcyIsIm9wdGlvbnMiLCJjb252ZXJzYXRpb25JZCIsInBhcmFtcyIsImNhbGxiYWNrIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbmZpZyIsImhvc3QiLCJwYXRoIiwiUEFUSCIsInJlcGxhY2UiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJnZW5lcmF0ZUp3dCIsImh0dHBDbGllbnQiLCJyZXF1ZXN0IiwiY3JlYXRlIiwicXVlcnkiLCJjcmVhdGVQYXRoV2l0aFF1ZXJ5IiwidW5kZWZpbmVkIiwicmVzcG9uc2UiLCJfbGlua3MiLCJuZXh0IiwiaHJlZiIsIm1hdGNoIiwiZ2V0IiwiZ2V0UXVlcnkiLCJlcnJvciIsIkVycm9yIiwicHJldiIsIm1lbWJlcklkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7Ozs7O0FBRUE7OztJQUdNQSxPOzs7O0FBQ0o7Ozt3QkFHa0I7QUFDaEIsYUFBTyxpREFBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7QUFNQSxtQkFBWUMsS0FBWixFQUFtQkMsT0FBbkIsRUFBNEI7QUFBQTs7QUFDMUIsU0FBS0QsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7OzJCQU9PQyxjLEVBQWdCQyxNLEVBQVFDLFEsRUFBVTtBQUN2Q0QsZUFBU0UsS0FBS0MsU0FBTCxDQUFlSCxNQUFmLENBQVQ7O0FBRUEsVUFBSUksU0FBUztBQUNYQyxjQUFNLEtBQUtQLE9BQUwsQ0FBYU8sSUFBYixJQUFxQixlQURoQjtBQUVYQyxjQUFNVixRQUFRVyxJQUFSLENBQWFDLE9BQWIsQ0FBcUIscUJBQXJCLEVBQTRDVCxjQUE1QyxDQUZLO0FBR1hVLGdCQUFRLE1BSEc7QUFJWEMsY0FBTVYsTUFKSztBQUtYVyxpQkFBUztBQUNQLDBCQUFnQixrQkFEVDtBQUVQQyxxQ0FB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Ozs7Ozs7Ozs7OzRCQU9PRixjLEVBQWdCK0IsUSxFQUFVN0IsUSxFQUFVO0FBQ3pDLFVBQUlHLFNBQVM7QUFDWEMsY0FBTSxLQUFLUCxPQUFMLENBQWFPLElBQWIsSUFBcUIsZUFEaEI7QUFFWEMsY0FBU1YsUUFBUVcsSUFBUixDQUFhQyxPQUFiLENBQ1AscUJBRE8sRUFFUFQsY0FGTyxDQUFULFNBR0srQixRQUxNO0FBTVhyQixnQkFBUSxRQU5HO0FBT1hFLGlCQUFTO0FBQ1AsMEJBQWdCLGtCQURUO0FBRVBDLHFDQUF5QixLQUFLZixLQUFMLENBQVdnQixXQUFYO0FBRmxCO0FBUEUsT0FBYjs7QUFhQSxXQUFLZixPQUFMLENBQWFnQixVQUFiLENBQXdCQyxPQUF4QixDQUFnQ1gsTUFBaEMsRUFBd0NILFFBQXhDO0FBQ0Q7Ozs7OztrQkFHWUwsTyIsImZpbGUiOiJNZW1iZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5leG1vIGZyb20gXCIuL2luZGV4XCI7XG5cbmltcG9ydCBVdGlscyBmcm9tIFwiLi9VdGlsc1wiO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYG1lbWJlcnNgIHJlc291cmNlLlxuICovXG5jbGFzcyBNZW1iZXJzIHtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBgbWVtYmVyc2AgcmVzb3VyY2UuXG4gICAqL1xuICBzdGF0aWMgZ2V0IFBBVEgoKSB7XG4gICAgcmV0dXJuIFwiL3YwLjEvY29udmVyc2F0aW9ucy97Y29udmVyc2F0aW9uX3V1aWR9L21lbWJlcnNcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IE1lbWJlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRzIC0gQ3JlZGVudGlhbHMgdXNlZCB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIE5leG1vIEFQSS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjbGFzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNyZWRzLCBvcHRpb25zKSB7XG4gICAgdGhpcy5jcmVkcyA9IGNyZWRzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1lbWJlciBpbiBhIGNvbnZlcnNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnZlcnNhdGlvbklkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udmVyc2F0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBQYXJhbWV0ZXJzIHVzZWQgd2hlbiBhZGRpbmcgYSBtZW1iZXIgdG8gdGhlIGNvbnZlcnNhdGlvbi4gU2VlIGh0dHBzOi8vZWEuZGV2ZWxvcGVyLm5leG1vLmNvbS9hcGkvY29udmVyc2F0aW9uI2FkZC1hLXVzZXItdG8tYS1jb252ZXJzYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgY3JlYXRlKGNvbnZlcnNhdGlvbklkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcblxuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IE1lbWJlcnMuUEFUSC5yZXBsYWNlKFwie2NvbnZlcnNhdGlvbl91dWlkfVwiLCBjb252ZXJzYXRpb25JZCksXG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuaHR0cENsaWVudC5yZXF1ZXN0KGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdG8gMi40LjAtYmV0YTEuIFJlbW92ZSBmb3IgMy4wLjBcbiAgYWRkKGNvbnZlcnNhdGlvbklkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5jcmVhdGUoY29udmVyc2F0aW9uSWQsIHBhcmFtcywgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBleGlzdGluZyBtZW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb252ZXJzYXRpb25JZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbnZlcnNhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHF1ZXJ5IC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVtYmVyIHRvIHJldHJpZXZlXG4gICAqICAgICAgICAgICAgICAgb3IgYSBzZXQgb2YgZmlsdGVyIHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gRm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICBzZWUgaHR0cHM6Ly9lYS5kZXZlbG9wZXIubmV4bW8uY29tL2FwaS9jb252ZXJzYXRpb24jcmV0cmlldmUtbWVtYmVycy1vZi1hLWNvbnZlcnNhdGlvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIGdldChjb252ZXJzYXRpb25JZCwgcXVlcnksIGNhbGxiYWNrKSB7XG4gICAgdmFyIGNvbmZpZyA9IHtcbiAgICAgIGhvc3Q6IHRoaXMub3B0aW9ucy5ob3N0IHx8IFwiYXBpLm5leG1vLmNvbVwiLFxuICAgICAgcGF0aDogVXRpbHMuY3JlYXRlUGF0aFdpdGhRdWVyeShcbiAgICAgICAgTWVtYmVycy5QQVRILnJlcGxhY2UoXCJ7Y29udmVyc2F0aW9uX3V1aWR9XCIsIGNvbnZlcnNhdGlvbklkKSxcbiAgICAgICAgcXVlcnlcbiAgICAgICksXG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBib2R5OiB1bmRlZmluZWQsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5jcmVkcy5nZW5lcmF0ZUp3dCgpfWBcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucy5odHRwQ2xpZW50LnJlcXVlc3QoY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG5leHQgcGFnZSBvZiBtZW1iZXJzIGZvciBhIGNvbnZlcnNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIGZyb20gYSBwYWdpbmF0ZWQgbWVtYmVycyBsaXN0XG4gICAqICAgICAgICAgICAgICAgc2VlIGh0dHBzOi8vZWEuZGV2ZWxvcGVyLm5leG1vLmNvbS9hcGkvY29udmVyc2F0aW9uI2dldE1lbWJlcnNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuXG4gICAqL1xuICBuZXh0KHJlc3BvbnNlLCBjYWxsYmFjaykge1xuICAgIGlmIChyZXNwb25zZS5fbGlua3MubmV4dCkge1xuICAgICAgY29uc3QgY29udmVyc2F0aW9uSWQgPSByZXNwb25zZS5fbGlua3MubmV4dC5ocmVmLm1hdGNoKC9DT04tW14vXSovZyk7XG4gICAgICB0aGlzLmdldChcbiAgICAgICAgY29udmVyc2F0aW9uSWQsXG4gICAgICAgIFV0aWxzLmdldFF1ZXJ5KHJlc3BvbnNlLl9saW5rcy5uZXh0LmhyZWYpLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJUaGUgcmVzcG9uc2UgZG9lc24ndCBoYXZlIGEgbmV4dCBwYWdlLlwiKTtcbiAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHByZXZpb3VzIHBhZ2UgbWVtYmVycyBmb3IgYSBjb252ZXJzYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBmcm9tIGEgcGFnaW5hdGVkIG1lbWJlcnMgbGlzdFxuICAgKiAgICAgICAgICAgICAgIHNlZSBodHRwczovL2VhLmRldmVsb3Blci5uZXhtby5jb20vYXBpL2NvbnZlcnNhdGlvbiNnZXRNZW1iZXJzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgcHJldihyZXNwb25zZSwgY2FsbGJhY2spIHtcbiAgICBpZiAocmVzcG9uc2UuX2xpbmtzLnByZXYpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gcmVzcG9uc2UuX2xpbmtzLnByZXYuaHJlZi5tYXRjaCgvQ09OLVteL10qL2cpO1xuICAgICAgdGhpcy5nZXQoXG4gICAgICAgIGNvbnZlcnNhdGlvbklkLFxuICAgICAgICBVdGlscy5nZXRRdWVyeShyZXNwb25zZS5fbGlua3MucHJldi5ocmVmKSxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVGhlIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIHBhZ2UuXCIpO1xuICAgICAgY2FsbGJhY2soZXJyb3IsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgbWVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udmVyc2F0aW9uSWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb24gdG8gdXBkYXRlIHRoZSBtZW1iZXIgaW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1iZXJJZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG1lbWJlciB0byB1cGRhdGUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBQYXJhbWV0ZXJzIHVzZWQgd2hlbiB1cGRhdGluZyB0aGUgbWVtYmVyLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIHVwZGF0ZShjb252ZXJzYXRpb25JZCwgbWVtYmVySWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMgPSBKU09OLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgdmFyIGNvbmZpZyA9IHtcbiAgICAgIGhvc3Q6IHRoaXMub3B0aW9ucy5ob3N0IHx8IFwiYXBpLm5leG1vLmNvbVwiLFxuICAgICAgcGF0aDogYCR7TWVtYmVycy5QQVRILnJlcGxhY2UoXG4gICAgICAgIFwie2NvbnZlcnNhdGlvbl91dWlkfVwiLFxuICAgICAgICBjb252ZXJzYXRpb25JZFxuICAgICAgKX0vJHttZW1iZXJJZH1gLFxuICAgICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgICAgYm9keTogcGFyYW1zLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMub3B0aW9ucy5odHRwQ2xpZW50LnJlcXVlc3QoY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRhIGFuIGV4aXN0aW5nIG1lbWJlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnZlcnNhdGlvbklkLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb252ZXJzYXRpb24gdG8gZGVsZXRlIHRoZSBtZW1iZXIgZnJvbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbWJlcklkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVtYmVyIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuXG4gICAqL1xuICBkZWxldGUoY29udmVyc2F0aW9uSWQsIG1lbWJlcklkLCBjYWxsYmFjaykge1xuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IGAke01lbWJlcnMuUEFUSC5yZXBsYWNlKFxuICAgICAgICBcIntjb252ZXJzYXRpb25fdXVpZH1cIixcbiAgICAgICAgY29udmVyc2F0aW9uSWRcbiAgICAgICl9LyR7bWVtYmVySWR9YCxcbiAgICAgIG1ldGhvZDogXCJERUxFVEVcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNyZWRzLmdlbmVyYXRlSnd0KCl9YFxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLm9wdGlvbnMuaHR0cENsaWVudC5yZXF1ZXN0KGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lbWJlcnM7XG4iXX0= |
\ | No newline at end of file |