plugnmeet-sdk-js 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,7 +12,7 @@ npm install plugnmeet-sdk-js
12
12
 
13
13
  **Import**
14
14
 
15
- JavaScript:
15
+ CommonJS:
16
16
 
17
17
  ```js
18
18
  const plugNmeet = require('plugnmeet-sdk-js').PlugNmeet;
@@ -25,7 +25,7 @@ const pnm = new plugNmeet(
25
25
  );
26
26
  ```
27
27
 
28
- TypeScript:
28
+ ES Modules/TypeScript:
29
29
 
30
30
  ```js
31
31
  import { PlugNmeet } from 'plugnmeet-sdk-js';
@@ -41,15 +41,19 @@ Please check `examples` directory to see some examples.
41
41
 
42
42
  ## Methods/API
43
43
 
44
- | Methods | Description |
45
- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
46
- | [createRoom](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#createRoom) | To create new room |
47
- | [getJoinToken](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getJoinToken) | Generate join token |
48
- | [isRoomActive](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#isRoomActive) | To check if room is active or not |
49
- | [getActiveRoomInfo](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getActiveRoomInfo) | Get active room information |
50
- | [getActiveRoomsInfo](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getActiveRoomsInfo) | Get all active rooms |
51
- | [endRoom](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#endRoom) | End active room |
52
- | [fetchRecordings](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#fetchRecordings) | Fetch recordings |
53
- | [deleteRecordings](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#deleteRecordings) | Delete recording |
54
- | [getRecordingDownloadToken](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getRecordingDownloadToken) | Generate token to download recording |
55
- | [getClientFiles](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getClientFiles) | Get client's files |
44
+ | Methods | Description |
45
+ | --------------------------------------------------------------------------------------------------------------------------- |-------------------------------------------|
46
+ | [createRoom](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#createRoom) | To create new room |
47
+ | [getJoinToken](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getJoinToken) | Generate join token |
48
+ | [isRoomActive](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#isRoomActive) | To check if room is active or not |
49
+ | [getActiveRoomInfo](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getActiveRoomInfo) | Get active room information |
50
+ | [getActiveRoomsInfo](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getActiveRoomsInfo) | Get all active rooms |
51
+ | [fetchPastRoomsInfo](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#fetchPastRoomsInfo) | Get past rooms information |
52
+ | [endRoom](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#endRoom) | End active room |
53
+ | [fetchAnalytics](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#fetchAnalytics) | Fetch analytics |
54
+ | [deleteAnalytics](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#deleteAnalytics) | Delete analytics |
55
+ | [getAnalyticsDownloadToken](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getAnalyticsDownloadToken) | Generate token to download analytics data |
56
+ | [fetchRecordings](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#fetchRecordings) | Fetch recordings |
57
+ | [deleteRecordings](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#deleteRecordings) | Delete recording |
58
+ | [getRecordingDownloadToken](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getRecordingDownloadToken) | Generate token to download recording |
59
+ | [getClientFiles](https://mynaparrot.github.io/plugNmeet-sdk-js/classes/PlugNmeet.html#getClientFiles) | Get client's files |
@@ -3,9 +3,11 @@ var $jMCoD$http = require("http");
3
3
  var $jMCoD$https = require("https");
4
4
  var $jMCoD$crypto = require("crypto");
5
5
 
6
+
6
7
  function $parcel$export(e, n, v, s) {
7
8
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
8
9
  }
10
+
9
11
  function $parcel$interopDefault(a) {
10
12
  return a && a.__esModule ? a.default : a;
11
13
  }
@@ -22,12 +24,11 @@ class $e71a992b229cccd4$export$5a82ec1641dd9681 {
22
24
  this.mainOptions = {};
23
25
  this.prepareHeader = (body)=>{
24
26
  const signature = (0, $jMCoD$crypto.createHmac)("sha256", this.apiSecret).update(body).digest("hex");
25
- const headers = {
27
+ return {
26
28
  "Content-Type": "application/json",
27
29
  "API-KEY": this.apiKey,
28
30
  "HASH-SIGNATURE": signature
29
31
  };
30
- return headers;
31
32
  };
32
33
  this.sendRequest = async (path, body)=>{
33
34
  return new Promise((resolve)=>{
@@ -93,7 +94,7 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
93
94
  }
94
95
  /**
95
96
  * Create new room
96
- * @param params: CreateRoomParams
97
+ * @param params
97
98
  * @returns Promise<CreateRoomResponse>
98
99
  */ async createRoom(params) {
99
100
  const output = await this.apiTransport.sendRequest("/room/create", params);
@@ -109,7 +110,7 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
109
110
  }
110
111
  /**
111
112
  * Generate join token
112
- * @param params: JoinTokenParams
113
+ * @param params
113
114
  * @returns Promise<JoinTokenResponse>
114
115
  */ async getJoinToken(params) {
115
116
  const output = await this.apiTransport.sendRequest("/room/getJoinToken", params);
@@ -125,7 +126,7 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
125
126
  }
126
127
  /**
127
128
  * If room is active or not
128
- * @param params: IsRoomActiveParams
129
+ * @param params
129
130
  * @returns Promise<IsRoomActiveResponse>
130
131
  */ async isRoomActive(params) {
131
132
  const output = await this.apiTransport.sendRequest("/room/isRoomActive", params);
@@ -135,12 +136,13 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
135
136
  };
136
137
  return {
137
138
  status: output.response.status,
139
+ is_active: output.response.is_active,
138
140
  msg: output.response.msg
139
141
  };
140
142
  }
141
143
  /**
142
144
  * Get active room information
143
- * @param params: ActiveRoomInfoParams
145
+ * @param params
144
146
  * @returns Promise<ActiveRoomInfoResponse>
145
147
  */ async getActiveRoomInfo(params) {
146
148
  const output = await this.apiTransport.sendRequest("/room/getActiveRoomInfo", params);
@@ -170,8 +172,24 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
170
172
  };
171
173
  }
172
174
  /**
175
+ * Fetch info about past rooms
176
+ * @param params
177
+ * @returns Promise<FetchRoomsInfoResponse>
178
+ */ async fetchPastRoomsInfo(params) {
179
+ const output = await this.apiTransport.sendRequest("/room/fetchPastRooms", params);
180
+ if (!output.status) return {
181
+ status: false,
182
+ msg: output.response
183
+ };
184
+ return {
185
+ status: output.response.status,
186
+ msg: output.response.msg,
187
+ result: output.response.result
188
+ };
189
+ }
190
+ /**
173
191
  * End active room
174
- * @param params: EndRoomParams
192
+ * @param params
175
193
  * @returns Promise<EndRoomResponse>
176
194
  */ async endRoom(params) {
177
195
  const output = await this.apiTransport.sendRequest("/room/endRoom", params);
@@ -185,8 +203,55 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
185
203
  };
186
204
  }
187
205
  /**
206
+ * Fetch analytics
207
+ * @param params
208
+ * @returns Promise<FetchAnalyticsResponse>
209
+ */ async fetchAnalytics(params) {
210
+ const output = await this.apiTransport.sendRequest("/analytics/fetch", params);
211
+ if (!output.status) return {
212
+ status: false,
213
+ msg: output.response
214
+ };
215
+ return {
216
+ status: output.response.status,
217
+ msg: output.response.msg,
218
+ result: output.response.result
219
+ };
220
+ }
221
+ /**
222
+ * Delete analytics
223
+ * @param params
224
+ * @returns Promise<DeleteAnalyticsResponse>
225
+ */ async deleteAnalytics(params) {
226
+ const output = await this.apiTransport.sendRequest("/analytics/delete", params);
227
+ if (!output.status) return {
228
+ status: false,
229
+ msg: output.response
230
+ };
231
+ return {
232
+ status: output.response.status,
233
+ msg: output.response.msg
234
+ };
235
+ }
236
+ /**
237
+ * Generate token to download recording
238
+ * @param params
239
+ * @returns Promise<AnalyticsDownloadTokenResponse>
240
+ */ async getAnalyticsDownloadToken(params) {
241
+ const output = await this.apiTransport.sendRequest("/analytics/getDownloadToken", params);
242
+ if (!output.status) return {
243
+ status: false,
244
+ msg: output.response
245
+ };
246
+ return {
247
+ status: output.response.status,
248
+ msg: output.response.msg,
249
+ token: output.response.token
250
+ };
251
+ }
252
+ /**
188
253
  * Fetch recordings
189
- * @param params: FetchRecordingsParams
254
+ * @param params
190
255
  * @returns Promise<FetchRecordingsResponse>
191
256
  */ async fetchRecordings(params) {
192
257
  const output = await this.apiTransport.sendRequest("/recording/fetch", params);
@@ -202,7 +267,7 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
202
267
  }
203
268
  /**
204
269
  * Delete recording
205
- * @param params: DeleteRecordingsParams
270
+ * @param params
206
271
  * @returns Promise<DeleteRecordingsResponse>
207
272
  */ async deleteRecordings(params) {
208
273
  const output = await this.apiTransport.sendRequest("/recording/delete", params);
@@ -216,9 +281,11 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
216
281
  };
217
282
  }
218
283
  /**
219
- * @returns Promise<ClientFilesResponse>
220
- */ async getClientFiles() {
221
- const output = await this.apiTransport.sendRequest("/getClientFiles", {});
284
+ * Generate token to download recording
285
+ * @param params
286
+ * @returns Promise<RecordingDownloadTokenResponse>
287
+ */ async getRecordingDownloadToken(params) {
288
+ const output = await this.apiTransport.sendRequest("/recording/getDownloadToken", params);
222
289
  if (!output.status) return {
223
290
  status: false,
224
291
  msg: output.response
@@ -226,16 +293,14 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
226
293
  return {
227
294
  status: output.response.status,
228
295
  msg: output.response.msg,
229
- css: output.response.css,
230
- js: output.response.js
296
+ token: output.response.token
231
297
  };
232
298
  }
233
299
  /**
234
- * Generate token to download recording
235
- * @param params: RecordingDownloadTokenParams
236
- * @returns Promise<RecordingDownloadTokenResponse>
237
- */ async getRecordingDownloadToken(params) {
238
- const output = await this.apiTransport.sendRequest("/recording/getDownloadToken", params);
300
+ * To get JS & CSS files to build interface
301
+ * @returns Promise<ClientFilesResponse>
302
+ */ async getClientFiles() {
303
+ const output = await this.apiTransport.sendRequest("/getClientFiles", {});
239
304
  if (!output.status) return {
240
305
  status: false,
241
306
  msg: output.response
@@ -243,7 +308,8 @@ class $405dcbf07186a1ff$export$1402da7f2870faee {
243
308
  return {
244
309
  status: output.response.status,
245
310
  msg: output.response.msg,
246
- token: output.response.token
311
+ css: output.response.css,
312
+ js: output.response.js
247
313
  };
248
314
  }
249
315
  }
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/PlugNmeet.ts","src/ApiTransport.ts"],"sourcesContent":["import { ApiTransport } from './ApiTransport';\nimport { CreateRoomParams, CreateRoomResponse } from './types/createRoom';\nimport { JoinTokenParams, JoinTokenResponse } from './types/joinToken';\nimport { IsRoomActiveParams, IsRoomActiveResponse } from './types/isRoomActive';\nimport {\n ActiveRoomInfoParams,\n ActiveRoomInfoResponse,\n} from './types/activeRoomInfo';\nimport { ActiveRoomsInfoResponse } from './types/activeRoomsInfo';\nimport { EndRoomParams, EndRoomResponse } from './types/endRoom';\nimport {\n FetchRecordingsParams,\n FetchRecordingsResponse,\n} from './types/fetchRecordings';\nimport {\n DeleteRecordingsParams,\n DeleteRecordingsResponse,\n} from './types/deleteRecordings';\nimport {\n RecordingDownloadTokenParams,\n RecordingDownloadTokenResponse,\n} from './types/RecordingDownloadToken';\nimport { ClientFilesResponse } from './types/clientFiles';\n\nexport class PlugNmeet {\n protected defaultPath = '/auth';\n private apiTransport: ApiTransport;\n\n /**\n * @param serverUrl plugNmeet server URL\n * @param apiKey plugNmeet API_Key\n * @param apiSecret plugNmeet API_Secret\n */\n constructor(serverUrl: string, apiKey: string, apiSecret: string) {\n this.apiTransport = new ApiTransport(\n serverUrl + this.defaultPath,\n apiKey,\n apiSecret,\n );\n }\n\n /**\n * Create new room\n * @param params: CreateRoomParams\n * @returns Promise<CreateRoomResponse>\n */\n public async createRoom(\n params: CreateRoomParams,\n ): Promise<CreateRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/create', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n roomInfo: output.response.roomInfo,\n };\n }\n\n /**\n * Generate join token\n * @param params: JoinTokenParams\n * @returns Promise<JoinTokenResponse>\n */\n public async getJoinToken(\n params: JoinTokenParams,\n ): Promise<JoinTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getJoinToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * If room is active or not\n * @param params: IsRoomActiveParams\n * @returns Promise<IsRoomActiveResponse>\n */\n public async isRoomActive(\n params: IsRoomActiveParams,\n ): Promise<IsRoomActiveResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/isRoomActive',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Get active room information\n * @param params: ActiveRoomInfoParams\n * @returns Promise<ActiveRoomInfoResponse>\n */\n public async getActiveRoomInfo(\n params: ActiveRoomInfoParams,\n ): Promise<ActiveRoomInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomInfo',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n room: output.response.room,\n };\n }\n\n /**\n * Get all active rooms\n * @returns Promise<ActiveRoomsInfoResponse>\n */\n public async getActiveRoomsInfo(): Promise<ActiveRoomsInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomsInfo',\n {},\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n rooms: output.response.rooms,\n };\n }\n\n /**\n * End active room\n * @param params: EndRoomParams\n * @returns Promise<EndRoomResponse>\n */\n public async endRoom(params: EndRoomParams): Promise<EndRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/endRoom', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Fetch recordings\n * @param params: FetchRecordingsParams\n * @returns Promise<FetchRecordingsResponse>\n */\n public async fetchRecordings(\n params: FetchRecordingsParams,\n ): Promise<FetchRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/fetch',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * Delete recording\n * @param params: DeleteRecordingsParams\n * @returns Promise<DeleteRecordingsResponse>\n */\n public async deleteRecordings(\n params: DeleteRecordingsParams,\n ): Promise<DeleteRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/delete',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * @returns Promise<ClientFilesResponse>\n */\n public async getClientFiles(): Promise<ClientFilesResponse> {\n const output = await this.apiTransport.sendRequest('/getClientFiles', {});\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n css: output.response.css,\n js: output.response.js,\n };\n }\n\n /**\n * Generate token to download recording\n * @param params: RecordingDownloadTokenParams\n * @returns Promise<RecordingDownloadTokenResponse>\n */\n public async getRecordingDownloadToken(\n params: RecordingDownloadTokenParams,\n ): Promise<RecordingDownloadTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/getDownloadToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n}\n","import http from 'http';\nimport https, { RequestOptions } from 'https';\nimport { createHmac } from 'crypto';\n\nexport type APIResponse = {\n status: boolean;\n response: any;\n};\n\nexport class ApiTransport {\n protected apiEndPointURL: string;\n protected apiKey: string;\n protected apiSecret: string;\n\n private isSecure = false;\n private mainOptions: RequestOptions = {};\n\n constructor(apiEndPointURL: string, apiKey: string, apiSecret: string) {\n this.apiEndPointURL = apiEndPointURL;\n this.apiKey = apiKey;\n this.apiSecret = apiSecret;\n\n const url = new URL(apiEndPointURL);\n let port = url.protocol === 'https:' ? 443 : 80;\n this.isSecure = url.protocol === 'https:' ?? false;\n\n // use port if supplied with url\n if (url.port) {\n port = Number(url.port);\n }\n\n this.mainOptions = {\n hostname: url.hostname,\n path: url.pathname,\n method: 'POST',\n port,\n };\n }\n\n private prepareHeader = (body: string) => {\n const signature = createHmac('sha256', this.apiSecret)\n .update(body)\n .digest('hex');\n\n const headers = {\n 'Content-Type': 'application/json',\n 'API-KEY': this.apiKey,\n 'HASH-SIGNATURE': signature,\n };\n\n return headers;\n };\n\n public sendRequest = async (path: string, body: any) => {\n return new Promise<APIResponse>((resolve) => {\n const output: APIResponse = {\n status: false,\n response: undefined,\n };\n\n const chunk = JSON.stringify(body);\n\n const options = { ...this.mainOptions };\n options.path += path;\n options.headers = this.prepareHeader(chunk);\n\n const req = (this.isSecure ? https : http).request(options, (res) => {\n const body: Array<Uint8Array> = [];\n res.on('data', (chunk) => body.push(chunk));\n\n res.on('end', () => {\n const resString = Buffer.concat(body).toString();\n\n try {\n output.status = true;\n output.response = JSON.parse(resString);\n } catch (error) {\n output.status = false;\n output.response = error;\n }\n\n resolve(output);\n });\n });\n\n req.on('error', (error) => {\n output.response = error.message;\n resolve(output);\n });\n\n req.write(chunk);\n req.end();\n });\n };\n}\n"],"names":[],"version":3,"file":"PlugNmeet.cjs.js.map"}
1
+ {"mappings":"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","sources":["src/PlugNmeet.ts","src/ApiTransport.ts"],"sourcesContent":["import { ApiTransport } from './ApiTransport';\nimport { CreateRoomParams, CreateRoomResponse } from './types/createRoom';\nimport { JoinTokenParams, JoinTokenResponse } from './types/joinToken';\nimport { IsRoomActiveParams, IsRoomActiveResponse } from './types/isRoomActive';\nimport {\n ActiveRoomInfoParams,\n ActiveRoomInfoResponse,\n} from './types/activeRoomInfo';\nimport { ActiveRoomsInfoResponse } from './types/activeRoomsInfo';\nimport { EndRoomParams, EndRoomResponse } from './types/endRoom';\nimport {\n FetchRecordingsParams,\n FetchRecordingsResponse,\n} from './types/fetchRecordings';\nimport {\n DeleteRecordingsParams,\n DeleteRecordingsResponse,\n} from './types/deleteRecordings';\nimport {\n RecordingDownloadTokenParams,\n RecordingDownloadTokenResponse,\n} from './types/recordingDownloadToken';\nimport { ClientFilesResponse } from './types/clientFiles';\nimport {\n FetchRoomsInfoResponse,\n FetchPastRoomsInfoParams,\n} from './types/fetchPastRoomsInfo';\nimport {\n FetchAnalyticsParams,\n FetchAnalyticsResponse,\n} from './types/fetchAnalytics';\nimport {\n DeleteAnalyticsParams,\n DeleteAnalyticsResponse,\n} from './types/deleteAnalytics';\nimport {\n AnalyticsDownloadTokenParams,\n AnalyticsDownloadTokenResponse,\n} from './types/analyticsDownloadToken';\nimport { PlugNmeetAPI } from './types/PlugNmeetAPI';\n\nexport class PlugNmeet implements PlugNmeetAPI {\n protected defaultPath = '/auth';\n private apiTransport: ApiTransport;\n\n /**\n * @param serverUrl plugNmeet server URL\n * @param apiKey plugNmeet API_Key\n * @param apiSecret plugNmeet API_Secret\n */\n constructor(serverUrl: string, apiKey: string, apiSecret: string) {\n this.apiTransport = new ApiTransport(\n serverUrl + this.defaultPath,\n apiKey,\n apiSecret,\n );\n }\n\n /**\n * Create new room\n * @param params\n * @returns Promise<CreateRoomResponse>\n */\n public async createRoom(\n params: CreateRoomParams,\n ): Promise<CreateRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/create', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n roomInfo: output.response.roomInfo,\n };\n }\n\n /**\n * Generate join token\n * @param params\n * @returns Promise<JoinTokenResponse>\n */\n public async getJoinToken(\n params: JoinTokenParams,\n ): Promise<JoinTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getJoinToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * If room is active or not\n * @param params\n * @returns Promise<IsRoomActiveResponse>\n */\n public async isRoomActive(\n params: IsRoomActiveParams,\n ): Promise<IsRoomActiveResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/isRoomActive',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n is_active: output.response.is_active,\n msg: output.response.msg,\n };\n }\n\n /**\n * Get active room information\n * @param params\n * @returns Promise<ActiveRoomInfoResponse>\n */\n public async getActiveRoomInfo(\n params: ActiveRoomInfoParams,\n ): Promise<ActiveRoomInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomInfo',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n room: output.response.room,\n };\n }\n\n /**\n * Get all active rooms\n * @returns Promise<ActiveRoomsInfoResponse>\n */\n public async getActiveRoomsInfo(): Promise<ActiveRoomsInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomsInfo',\n {},\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n rooms: output.response.rooms,\n };\n }\n\n /**\n * Fetch info about past rooms\n * @param params\n * @returns Promise<FetchRoomsInfoResponse>\n */\n public async fetchPastRoomsInfo(\n params: FetchPastRoomsInfoParams,\n ): Promise<FetchRoomsInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/fetchPastRooms',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * End active room\n * @param params\n * @returns Promise<EndRoomResponse>\n */\n public async endRoom(params: EndRoomParams): Promise<EndRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/endRoom', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Fetch analytics\n * @param params\n * @returns Promise<FetchAnalyticsResponse>\n */\n public async fetchAnalytics(\n params: FetchAnalyticsParams,\n ): Promise<FetchAnalyticsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/analytics/fetch',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * Delete analytics\n * @param params\n * @returns Promise<DeleteAnalyticsResponse>\n */\n public async deleteAnalytics(\n params: DeleteAnalyticsParams,\n ): Promise<DeleteAnalyticsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/analytics/delete',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Generate token to download recording\n * @param params\n * @returns Promise<AnalyticsDownloadTokenResponse>\n */\n public async getAnalyticsDownloadToken(\n params: AnalyticsDownloadTokenParams,\n ): Promise<AnalyticsDownloadTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/analytics/getDownloadToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * Fetch recordings\n * @param params\n * @returns Promise<FetchRecordingsResponse>\n */\n public async fetchRecordings(\n params: FetchRecordingsParams,\n ): Promise<FetchRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/fetch',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * Delete recording\n * @param params\n * @returns Promise<DeleteRecordingsResponse>\n */\n public async deleteRecordings(\n params: DeleteRecordingsParams,\n ): Promise<DeleteRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/delete',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Generate token to download recording\n * @param params\n * @returns Promise<RecordingDownloadTokenResponse>\n */\n public async getRecordingDownloadToken(\n params: RecordingDownloadTokenParams,\n ): Promise<RecordingDownloadTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/getDownloadToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * To get JS & CSS files to build interface\n * @returns Promise<ClientFilesResponse>\n */\n public async getClientFiles(): Promise<ClientFilesResponse> {\n const output = await this.apiTransport.sendRequest('/getClientFiles', {});\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n css: output.response.css,\n js: output.response.js,\n };\n }\n}\n","import http from 'http';\nimport https, { RequestOptions } from 'https';\nimport { createHmac } from 'crypto';\n\nexport type APIResponse = {\n status: boolean;\n response: any;\n};\n\nexport class ApiTransport {\n protected apiEndPointURL: string;\n protected apiKey: string;\n protected apiSecret: string;\n\n private isSecure = false;\n private mainOptions: RequestOptions = {};\n\n constructor(apiEndPointURL: string, apiKey: string, apiSecret: string) {\n this.apiEndPointURL = apiEndPointURL;\n this.apiKey = apiKey;\n this.apiSecret = apiSecret;\n\n const url = new URL(apiEndPointURL);\n let port = url.protocol === 'https:' ? 443 : 80;\n this.isSecure = url.protocol === 'https:' ?? false;\n\n // use port if supplied with url\n if (url.port) {\n port = Number(url.port);\n }\n\n this.mainOptions = {\n hostname: url.hostname,\n path: url.pathname,\n method: 'POST',\n port,\n };\n }\n\n private prepareHeader = (body: string) => {\n const signature = createHmac('sha256', this.apiSecret)\n .update(body)\n .digest('hex');\n\n return {\n 'Content-Type': 'application/json',\n 'API-KEY': this.apiKey,\n 'HASH-SIGNATURE': signature,\n };\n };\n\n public sendRequest = async (path: string, body: any) => {\n return new Promise<APIResponse>((resolve) => {\n const output: APIResponse = {\n status: false,\n response: undefined,\n };\n\n const chunk = JSON.stringify(body);\n\n const options = { ...this.mainOptions };\n options.path += path;\n options.headers = this.prepareHeader(chunk);\n\n const req = (this.isSecure ? https : http).request(options, (res) => {\n const body: Array<Uint8Array> = [];\n res.on('data', (chunk) => body.push(chunk));\n\n res.on('end', () => {\n const resString = Buffer.concat(body).toString();\n\n try {\n output.status = true;\n output.response = JSON.parse(resString);\n } catch (error) {\n output.status = false;\n output.response = error;\n }\n\n resolve(output);\n });\n });\n\n req.on('error', (error) => {\n output.response = error.message;\n resolve(output);\n });\n\n req.write(chunk);\n req.end();\n });\n };\n}\n"],"names":[],"version":3,"file":"PlugNmeet.cjs.js.map"}
package/dist/PlugNmeet.js CHANGED
@@ -2,9 +2,11 @@ var $d6kgz$http = require("http");
2
2
  var $d6kgz$https = require("https");
3
3
  var $d6kgz$crypto = require("crypto");
4
4
 
5
+
5
6
  function $parcel$export(e, n, v, s) {
6
7
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
7
8
  }
9
+
8
10
  function $parcel$interopDefault(a) {
9
11
  return a && a.__esModule ? a.default : a;
10
12
  }
@@ -19,12 +21,11 @@ class $3437a6ece6919767$export$5a82ec1641dd9681 {
19
21
  this.mainOptions = {};
20
22
  this.prepareHeader = (body)=>{
21
23
  const signature = (0, $d6kgz$crypto.createHmac)("sha256", this.apiSecret).update(body).digest("hex");
22
- const headers = {
24
+ return {
23
25
  "Content-Type": "application/json",
24
26
  "API-KEY": this.apiKey,
25
27
  "HASH-SIGNATURE": signature
26
28
  };
27
- return headers;
28
29
  };
29
30
  this.sendRequest = async (path, body)=>{
30
31
  return new Promise((resolve)=>{
@@ -90,7 +91,7 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
90
91
  }
91
92
  /**
92
93
  * Create new room
93
- * @param params: CreateRoomParams
94
+ * @param params
94
95
  * @returns Promise<CreateRoomResponse>
95
96
  */ async createRoom(params) {
96
97
  const output = await this.apiTransport.sendRequest("/room/create", params);
@@ -106,7 +107,7 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
106
107
  }
107
108
  /**
108
109
  * Generate join token
109
- * @param params: JoinTokenParams
110
+ * @param params
110
111
  * @returns Promise<JoinTokenResponse>
111
112
  */ async getJoinToken(params) {
112
113
  const output = await this.apiTransport.sendRequest("/room/getJoinToken", params);
@@ -122,7 +123,7 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
122
123
  }
123
124
  /**
124
125
  * If room is active or not
125
- * @param params: IsRoomActiveParams
126
+ * @param params
126
127
  * @returns Promise<IsRoomActiveResponse>
127
128
  */ async isRoomActive(params) {
128
129
  const output = await this.apiTransport.sendRequest("/room/isRoomActive", params);
@@ -132,12 +133,13 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
132
133
  };
133
134
  return {
134
135
  status: output.response.status,
136
+ is_active: output.response.is_active,
135
137
  msg: output.response.msg
136
138
  };
137
139
  }
138
140
  /**
139
141
  * Get active room information
140
- * @param params: ActiveRoomInfoParams
142
+ * @param params
141
143
  * @returns Promise<ActiveRoomInfoResponse>
142
144
  */ async getActiveRoomInfo(params) {
143
145
  const output = await this.apiTransport.sendRequest("/room/getActiveRoomInfo", params);
@@ -167,8 +169,24 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
167
169
  };
168
170
  }
169
171
  /**
172
+ * Fetch info about past rooms
173
+ * @param params
174
+ * @returns Promise<FetchRoomsInfoResponse>
175
+ */ async fetchPastRoomsInfo(params) {
176
+ const output = await this.apiTransport.sendRequest("/room/fetchPastRooms", params);
177
+ if (!output.status) return {
178
+ status: false,
179
+ msg: output.response
180
+ };
181
+ return {
182
+ status: output.response.status,
183
+ msg: output.response.msg,
184
+ result: output.response.result
185
+ };
186
+ }
187
+ /**
170
188
  * End active room
171
- * @param params: EndRoomParams
189
+ * @param params
172
190
  * @returns Promise<EndRoomResponse>
173
191
  */ async endRoom(params) {
174
192
  const output = await this.apiTransport.sendRequest("/room/endRoom", params);
@@ -182,8 +200,55 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
182
200
  };
183
201
  }
184
202
  /**
203
+ * Fetch analytics
204
+ * @param params
205
+ * @returns Promise<FetchAnalyticsResponse>
206
+ */ async fetchAnalytics(params) {
207
+ const output = await this.apiTransport.sendRequest("/analytics/fetch", params);
208
+ if (!output.status) return {
209
+ status: false,
210
+ msg: output.response
211
+ };
212
+ return {
213
+ status: output.response.status,
214
+ msg: output.response.msg,
215
+ result: output.response.result
216
+ };
217
+ }
218
+ /**
219
+ * Delete analytics
220
+ * @param params
221
+ * @returns Promise<DeleteAnalyticsResponse>
222
+ */ async deleteAnalytics(params) {
223
+ const output = await this.apiTransport.sendRequest("/analytics/delete", params);
224
+ if (!output.status) return {
225
+ status: false,
226
+ msg: output.response
227
+ };
228
+ return {
229
+ status: output.response.status,
230
+ msg: output.response.msg
231
+ };
232
+ }
233
+ /**
234
+ * Generate token to download recording
235
+ * @param params
236
+ * @returns Promise<AnalyticsDownloadTokenResponse>
237
+ */ async getAnalyticsDownloadToken(params) {
238
+ const output = await this.apiTransport.sendRequest("/analytics/getDownloadToken", params);
239
+ if (!output.status) return {
240
+ status: false,
241
+ msg: output.response
242
+ };
243
+ return {
244
+ status: output.response.status,
245
+ msg: output.response.msg,
246
+ token: output.response.token
247
+ };
248
+ }
249
+ /**
185
250
  * Fetch recordings
186
- * @param params: FetchRecordingsParams
251
+ * @param params
187
252
  * @returns Promise<FetchRecordingsResponse>
188
253
  */ async fetchRecordings(params) {
189
254
  const output = await this.apiTransport.sendRequest("/recording/fetch", params);
@@ -199,7 +264,7 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
199
264
  }
200
265
  /**
201
266
  * Delete recording
202
- * @param params: DeleteRecordingsParams
267
+ * @param params
203
268
  * @returns Promise<DeleteRecordingsResponse>
204
269
  */ async deleteRecordings(params) {
205
270
  const output = await this.apiTransport.sendRequest("/recording/delete", params);
@@ -213,9 +278,11 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
213
278
  };
214
279
  }
215
280
  /**
216
- * @returns Promise<ClientFilesResponse>
217
- */ async getClientFiles() {
218
- const output = await this.apiTransport.sendRequest("/getClientFiles", {});
281
+ * Generate token to download recording
282
+ * @param params
283
+ * @returns Promise<RecordingDownloadTokenResponse>
284
+ */ async getRecordingDownloadToken(params) {
285
+ const output = await this.apiTransport.sendRequest("/recording/getDownloadToken", params);
219
286
  if (!output.status) return {
220
287
  status: false,
221
288
  msg: output.response
@@ -223,16 +290,14 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
223
290
  return {
224
291
  status: output.response.status,
225
292
  msg: output.response.msg,
226
- css: output.response.css,
227
- js: output.response.js
293
+ token: output.response.token
228
294
  };
229
295
  }
230
296
  /**
231
- * Generate token to download recording
232
- * @param params: RecordingDownloadTokenParams
233
- * @returns Promise<RecordingDownloadTokenResponse>
234
- */ async getRecordingDownloadToken(params) {
235
- const output = await this.apiTransport.sendRequest("/recording/getDownloadToken", params);
297
+ * To get JS & CSS files to build interface
298
+ * @returns Promise<ClientFilesResponse>
299
+ */ async getClientFiles() {
300
+ const output = await this.apiTransport.sendRequest("/getClientFiles", {});
236
301
  if (!output.status) return {
237
302
  status: false,
238
303
  msg: output.response
@@ -240,7 +305,8 @@ class $8e30a24c4952589a$export$1402da7f2870faee {
240
305
  return {
241
306
  status: output.response.status,
242
307
  msg: output.response.msg,
243
- token: output.response.token
308
+ css: output.response.css,
309
+ js: output.response.js
244
310
  };
245
311
  }
246
312
  }
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/PlugNmeet.ts","src/ApiTransport.ts"],"sourcesContent":["import { ApiTransport } from './ApiTransport';\nimport { CreateRoomParams, CreateRoomResponse } from './types/createRoom';\nimport { JoinTokenParams, JoinTokenResponse } from './types/joinToken';\nimport { IsRoomActiveParams, IsRoomActiveResponse } from './types/isRoomActive';\nimport {\n ActiveRoomInfoParams,\n ActiveRoomInfoResponse,\n} from './types/activeRoomInfo';\nimport { ActiveRoomsInfoResponse } from './types/activeRoomsInfo';\nimport { EndRoomParams, EndRoomResponse } from './types/endRoom';\nimport {\n FetchRecordingsParams,\n FetchRecordingsResponse,\n} from './types/fetchRecordings';\nimport {\n DeleteRecordingsParams,\n DeleteRecordingsResponse,\n} from './types/deleteRecordings';\nimport {\n RecordingDownloadTokenParams,\n RecordingDownloadTokenResponse,\n} from './types/RecordingDownloadToken';\nimport { ClientFilesResponse } from './types/clientFiles';\n\nexport class PlugNmeet {\n protected defaultPath = '/auth';\n private apiTransport: ApiTransport;\n\n /**\n * @param serverUrl plugNmeet server URL\n * @param apiKey plugNmeet API_Key\n * @param apiSecret plugNmeet API_Secret\n */\n constructor(serverUrl: string, apiKey: string, apiSecret: string) {\n this.apiTransport = new ApiTransport(\n serverUrl + this.defaultPath,\n apiKey,\n apiSecret,\n );\n }\n\n /**\n * Create new room\n * @param params: CreateRoomParams\n * @returns Promise<CreateRoomResponse>\n */\n public async createRoom(\n params: CreateRoomParams,\n ): Promise<CreateRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/create', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n roomInfo: output.response.roomInfo,\n };\n }\n\n /**\n * Generate join token\n * @param params: JoinTokenParams\n * @returns Promise<JoinTokenResponse>\n */\n public async getJoinToken(\n params: JoinTokenParams,\n ): Promise<JoinTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getJoinToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * If room is active or not\n * @param params: IsRoomActiveParams\n * @returns Promise<IsRoomActiveResponse>\n */\n public async isRoomActive(\n params: IsRoomActiveParams,\n ): Promise<IsRoomActiveResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/isRoomActive',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Get active room information\n * @param params: ActiveRoomInfoParams\n * @returns Promise<ActiveRoomInfoResponse>\n */\n public async getActiveRoomInfo(\n params: ActiveRoomInfoParams,\n ): Promise<ActiveRoomInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomInfo',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n room: output.response.room,\n };\n }\n\n /**\n * Get all active rooms\n * @returns Promise<ActiveRoomsInfoResponse>\n */\n public async getActiveRoomsInfo(): Promise<ActiveRoomsInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomsInfo',\n {},\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n rooms: output.response.rooms,\n };\n }\n\n /**\n * End active room\n * @param params: EndRoomParams\n * @returns Promise<EndRoomResponse>\n */\n public async endRoom(params: EndRoomParams): Promise<EndRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/endRoom', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Fetch recordings\n * @param params: FetchRecordingsParams\n * @returns Promise<FetchRecordingsResponse>\n */\n public async fetchRecordings(\n params: FetchRecordingsParams,\n ): Promise<FetchRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/fetch',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * Delete recording\n * @param params: DeleteRecordingsParams\n * @returns Promise<DeleteRecordingsResponse>\n */\n public async deleteRecordings(\n params: DeleteRecordingsParams,\n ): Promise<DeleteRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/delete',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * @returns Promise<ClientFilesResponse>\n */\n public async getClientFiles(): Promise<ClientFilesResponse> {\n const output = await this.apiTransport.sendRequest('/getClientFiles', {});\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n css: output.response.css,\n js: output.response.js,\n };\n }\n\n /**\n * Generate token to download recording\n * @param params: RecordingDownloadTokenParams\n * @returns Promise<RecordingDownloadTokenResponse>\n */\n public async getRecordingDownloadToken(\n params: RecordingDownloadTokenParams,\n ): Promise<RecordingDownloadTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/getDownloadToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n}\n","import http from 'http';\nimport https, { RequestOptions } from 'https';\nimport { createHmac } from 'crypto';\n\nexport type APIResponse = {\n status: boolean;\n response: any;\n};\n\nexport class ApiTransport {\n protected apiEndPointURL: string;\n protected apiKey: string;\n protected apiSecret: string;\n\n private isSecure = false;\n private mainOptions: RequestOptions = {};\n\n constructor(apiEndPointURL: string, apiKey: string, apiSecret: string) {\n this.apiEndPointURL = apiEndPointURL;\n this.apiKey = apiKey;\n this.apiSecret = apiSecret;\n\n const url = new URL(apiEndPointURL);\n let port = url.protocol === 'https:' ? 443 : 80;\n this.isSecure = url.protocol === 'https:' ?? false;\n\n // use port if supplied with url\n if (url.port) {\n port = Number(url.port);\n }\n\n this.mainOptions = {\n hostname: url.hostname,\n path: url.pathname,\n method: 'POST',\n port,\n };\n }\n\n private prepareHeader = (body: string) => {\n const signature = createHmac('sha256', this.apiSecret)\n .update(body)\n .digest('hex');\n\n const headers = {\n 'Content-Type': 'application/json',\n 'API-KEY': this.apiKey,\n 'HASH-SIGNATURE': signature,\n };\n\n return headers;\n };\n\n public sendRequest = async (path: string, body: any) => {\n return new Promise<APIResponse>((resolve) => {\n const output: APIResponse = {\n status: false,\n response: undefined,\n };\n\n const chunk = JSON.stringify(body);\n\n const options = { ...this.mainOptions };\n options.path += path;\n options.headers = this.prepareHeader(chunk);\n\n const req = (this.isSecure ? https : http).request(options, (res) => {\n const body: Array<Uint8Array> = [];\n res.on('data', (chunk) => body.push(chunk));\n\n res.on('end', () => {\n const resString = Buffer.concat(body).toString();\n\n try {\n output.status = true;\n output.response = JSON.parse(resString);\n } catch (error) {\n output.status = false;\n output.response = error;\n }\n\n resolve(output);\n });\n });\n\n req.on('error', (error) => {\n output.response = error.message;\n resolve(output);\n });\n\n req.write(chunk);\n req.end();\n });\n };\n}\n"],"names":[],"version":3,"file":"PlugNmeet.js.map","sourceRoot":"../"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;ACSO,MAAM;IAQX,YAAY,cAAsB,EAAE,MAAc,EAAE,SAAiB,CAAE;aAH/D,WAAW;aACX,cAA8B,CAAC;aAwB/B,gBAAgB,CAAC;YACvB,MAAM,YAAY,CAAA,GAAA,wBAAS,EAAE,UAAU,IAAI,CAAC,SAAS,EAClD,MAAM,CAAC,MACP,MAAM,CAAC;YAEV,OAAO;gBACL,gBAAgB;gBAChB,WAAW,IAAI,CAAC,MAAM;gBACtB,kBAAkB;YACpB;QACF;aAEO,cAAc,OAAO,MAAc;YACxC,OAAO,IAAI,QAAqB,CAAC;gBAC/B,MAAM,SAAsB;oBAC1B,QAAQ;oBACR,UAAU;gBACZ;gBAEA,MAAM,QAAQ,KAAK,SAAS,CAAC;gBAE7B,MAAM,UAAU;oBAAE,GAAG,IAAI,CAAC,WAAW;gBAAC;gBACtC,QAAQ,IAAI,IAAI;gBAChB,QAAQ,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAErC,MAAM,MAAM,AAAC,CAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,GAAA,sCAAI,IAAI,CAAA,GAAA,qCAAG,CAAA,EAAG,OAAO,CAAC,SAAS,CAAC;oBAC3D,MAAM,OAA0B,EAAE;oBAClC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAU,KAAK,IAAI,CAAC;oBAEpC,IAAI,EAAE,CAAC,OAAO;wBACZ,MAAM,YAAY,OAAO,MAAM,CAAC,MAAM,QAAQ;wBAE9C,IAAI;4BACF,OAAO,MAAM,GAAG;4BAChB,OAAO,QAAQ,GAAG,KAAK,KAAK,CAAC;wBAC/B,EAAE,OAAO,OAAO;4BACd,OAAO,MAAM,GAAG;4BAChB,OAAO,QAAQ,GAAG;wBACpB;wBAEA,QAAQ;oBACV;gBACF;gBAEA,IAAI,EAAE,CAAC,SAAS,CAAC;oBACf,OAAO,QAAQ,GAAG,MAAM,OAAO;oBAC/B,QAAQ;gBACV;gBAEA,IAAI,KAAK,CAAC;gBACV,IAAI,GAAG;YACT;QACF;QAzEE,IAAI,CAAC,cAAc,GAAG;QACtB,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,SAAS,GAAG;QAEjB,MAAM,MAAM,IAAI,IAAI;QACpB,IAAI,OAAO,IAAI,QAAQ,KAAK,WAAW,MAAM;QAC7C,IAAI,CAAC,QAAQ,GAAG,CAAA,IAAI,QAAQ,KAAK,QAAO,KAAK;QAE7C,gCAAgC;QAChC,IAAI,IAAI,IAAI,EACV,OAAO,OAAO,IAAI,IAAI;QAGxB,IAAI,CAAC,WAAW,GAAG;YACjB,UAAU,IAAI,QAAQ;YACtB,MAAM,IAAI,QAAQ;YAClB,QAAQ;kBACR;QACF;IACF;AAuDF;;;ADnDO,MAAM;IAIX;;;;GAIC,GACD,YAAY,SAAiB,EAAE,MAAc,EAAE,SAAiB,CAAE;aARxD,cAAc;QAStB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,GAAA,yCAAW,EACjC,YAAY,IAAI,CAAC,WAAW,EAC5B,QACA;IAEJ;IAEA;;;;GAIC,GACD,MAAa,WACX,MAAwB,EACK;QAC7B,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB;QACnE,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,UAAU,OAAO,QAAQ,CAAC,QAAQ;QACpC;IACF;IAEA;;;;GAIC,GACD,MAAa,aACX,MAAuB,EACK;QAC5B,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,sBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,OAAO,OAAO,QAAQ,CAAC,KAAK;QAC9B;IACF;IAEA;;;;GAIC,GACD,MAAa,aACX,MAA0B,EACK;QAC/B,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,sBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,WAAW,OAAO,QAAQ,CAAC,SAAS;YACpC,KAAK,OAAO,QAAQ,CAAC,GAAG;QAC1B;IACF;IAEA;;;;GAIC,GACD,MAAa,kBACX,MAA4B,EACK;QACjC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,2BACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,MAAM,OAAO,QAAQ,CAAC,IAAI;QAC5B;IACF;IAEA;;;GAGC,GACD,MAAa,qBAAuD;QAClE,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,4BACA,CAAC;QAEH,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,OAAO,OAAO,QAAQ,CAAC,KAAK;QAC9B;IACF;IAEA;;;;GAIC,GACD,MAAa,mBACX,MAAgC,EACC;QACjC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,wBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,QAAQ,OAAO,QAAQ,CAAC,MAAM;QAChC;IACF;IAEA;;;;GAIC,GACD,MAAa,QAAQ,MAAqB,EAA4B;QACpE,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,iBAAiB;QACpE,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;QAC1B;IACF;IAEA;;;;GAIC,GACD,MAAa,eACX,MAA4B,EACK;QACjC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,oBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,QAAQ,OAAO,QAAQ,CAAC,MAAM;QAChC;IACF;IAEA;;;;GAIC,GACD,MAAa,gBACX,MAA6B,EACK;QAClC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,qBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;QAC1B;IACF;IAEA;;;;GAIC,GACD,MAAa,0BACX,MAAoC,EACK;QACzC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,+BACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,OAAO,OAAO,QAAQ,CAAC,KAAK;QAC9B;IACF;IAEA;;;;GAIC,GACD,MAAa,gBACX,MAA6B,EACK;QAClC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,oBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,QAAQ,OAAO,QAAQ,CAAC,MAAM;QAChC;IACF;IAEA;;;;GAIC,GACD,MAAa,iBACX,MAA8B,EACK;QACnC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,qBACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;QAC1B;IACF;IAEA;;;;GAIC,GACD,MAAa,0BACX,MAAoC,EACK;QACzC,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAChD,+BACA;QAEF,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,OAAO,OAAO,QAAQ,CAAC,KAAK;QAC9B;IACF;IAEA;;;GAGC,GACD,MAAa,iBAA+C;QAC1D,MAAM,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC;QACvE,IAAI,CAAC,OAAO,MAAM,EAChB,OAAO;YACL,QAAQ;YACR,KAAK,OAAO,QAAQ;QACtB;QAGF,OAAO;YACL,QAAQ,OAAO,QAAQ,CAAC,MAAM;YAC9B,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,KAAK,OAAO,QAAQ,CAAC,GAAG;YACxB,IAAI,OAAO,QAAQ,CAAC,EAAE;QACxB;IACF;AACF","sources":["src/PlugNmeet.ts","src/ApiTransport.ts"],"sourcesContent":["import { ApiTransport } from './ApiTransport';\nimport { CreateRoomParams, CreateRoomResponse } from './types/createRoom';\nimport { JoinTokenParams, JoinTokenResponse } from './types/joinToken';\nimport { IsRoomActiveParams, IsRoomActiveResponse } from './types/isRoomActive';\nimport {\n ActiveRoomInfoParams,\n ActiveRoomInfoResponse,\n} from './types/activeRoomInfo';\nimport { ActiveRoomsInfoResponse } from './types/activeRoomsInfo';\nimport { EndRoomParams, EndRoomResponse } from './types/endRoom';\nimport {\n FetchRecordingsParams,\n FetchRecordingsResponse,\n} from './types/fetchRecordings';\nimport {\n DeleteRecordingsParams,\n DeleteRecordingsResponse,\n} from './types/deleteRecordings';\nimport {\n RecordingDownloadTokenParams,\n RecordingDownloadTokenResponse,\n} from './types/recordingDownloadToken';\nimport { ClientFilesResponse } from './types/clientFiles';\nimport {\n FetchRoomsInfoResponse,\n FetchPastRoomsInfoParams,\n} from './types/fetchPastRoomsInfo';\nimport {\n FetchAnalyticsParams,\n FetchAnalyticsResponse,\n} from './types/fetchAnalytics';\nimport {\n DeleteAnalyticsParams,\n DeleteAnalyticsResponse,\n} from './types/deleteAnalytics';\nimport {\n AnalyticsDownloadTokenParams,\n AnalyticsDownloadTokenResponse,\n} from './types/analyticsDownloadToken';\nimport { PlugNmeetAPI } from './types/PlugNmeetAPI';\n\nexport class PlugNmeet implements PlugNmeetAPI {\n protected defaultPath = '/auth';\n private apiTransport: ApiTransport;\n\n /**\n * @param serverUrl plugNmeet server URL\n * @param apiKey plugNmeet API_Key\n * @param apiSecret plugNmeet API_Secret\n */\n constructor(serverUrl: string, apiKey: string, apiSecret: string) {\n this.apiTransport = new ApiTransport(\n serverUrl + this.defaultPath,\n apiKey,\n apiSecret,\n );\n }\n\n /**\n * Create new room\n * @param params\n * @returns Promise<CreateRoomResponse>\n */\n public async createRoom(\n params: CreateRoomParams,\n ): Promise<CreateRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/create', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n roomInfo: output.response.roomInfo,\n };\n }\n\n /**\n * Generate join token\n * @param params\n * @returns Promise<JoinTokenResponse>\n */\n public async getJoinToken(\n params: JoinTokenParams,\n ): Promise<JoinTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getJoinToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * If room is active or not\n * @param params\n * @returns Promise<IsRoomActiveResponse>\n */\n public async isRoomActive(\n params: IsRoomActiveParams,\n ): Promise<IsRoomActiveResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/isRoomActive',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n is_active: output.response.is_active,\n msg: output.response.msg,\n };\n }\n\n /**\n * Get active room information\n * @param params\n * @returns Promise<ActiveRoomInfoResponse>\n */\n public async getActiveRoomInfo(\n params: ActiveRoomInfoParams,\n ): Promise<ActiveRoomInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomInfo',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n room: output.response.room,\n };\n }\n\n /**\n * Get all active rooms\n * @returns Promise<ActiveRoomsInfoResponse>\n */\n public async getActiveRoomsInfo(): Promise<ActiveRoomsInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/getActiveRoomsInfo',\n {},\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n rooms: output.response.rooms,\n };\n }\n\n /**\n * Fetch info about past rooms\n * @param params\n * @returns Promise<FetchRoomsInfoResponse>\n */\n public async fetchPastRoomsInfo(\n params: FetchPastRoomsInfoParams,\n ): Promise<FetchRoomsInfoResponse> {\n const output = await this.apiTransport.sendRequest(\n '/room/fetchPastRooms',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * End active room\n * @param params\n * @returns Promise<EndRoomResponse>\n */\n public async endRoom(params: EndRoomParams): Promise<EndRoomResponse> {\n const output = await this.apiTransport.sendRequest('/room/endRoom', params);\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Fetch analytics\n * @param params\n * @returns Promise<FetchAnalyticsResponse>\n */\n public async fetchAnalytics(\n params: FetchAnalyticsParams,\n ): Promise<FetchAnalyticsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/analytics/fetch',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * Delete analytics\n * @param params\n * @returns Promise<DeleteAnalyticsResponse>\n */\n public async deleteAnalytics(\n params: DeleteAnalyticsParams,\n ): Promise<DeleteAnalyticsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/analytics/delete',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Generate token to download recording\n * @param params\n * @returns Promise<AnalyticsDownloadTokenResponse>\n */\n public async getAnalyticsDownloadToken(\n params: AnalyticsDownloadTokenParams,\n ): Promise<AnalyticsDownloadTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/analytics/getDownloadToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * Fetch recordings\n * @param params\n * @returns Promise<FetchRecordingsResponse>\n */\n public async fetchRecordings(\n params: FetchRecordingsParams,\n ): Promise<FetchRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/fetch',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n result: output.response.result,\n };\n }\n\n /**\n * Delete recording\n * @param params\n * @returns Promise<DeleteRecordingsResponse>\n */\n public async deleteRecordings(\n params: DeleteRecordingsParams,\n ): Promise<DeleteRecordingsResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/delete',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n };\n }\n\n /**\n * Generate token to download recording\n * @param params\n * @returns Promise<RecordingDownloadTokenResponse>\n */\n public async getRecordingDownloadToken(\n params: RecordingDownloadTokenParams,\n ): Promise<RecordingDownloadTokenResponse> {\n const output = await this.apiTransport.sendRequest(\n '/recording/getDownloadToken',\n params,\n );\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n token: output.response.token,\n };\n }\n\n /**\n * To get JS & CSS files to build interface\n * @returns Promise<ClientFilesResponse>\n */\n public async getClientFiles(): Promise<ClientFilesResponse> {\n const output = await this.apiTransport.sendRequest('/getClientFiles', {});\n if (!output.status) {\n return {\n status: false,\n msg: output.response,\n };\n }\n\n return {\n status: output.response.status,\n msg: output.response.msg,\n css: output.response.css,\n js: output.response.js,\n };\n }\n}\n","import http from 'http';\nimport https, { RequestOptions } from 'https';\nimport { createHmac } from 'crypto';\n\nexport type APIResponse = {\n status: boolean;\n response: any;\n};\n\nexport class ApiTransport {\n protected apiEndPointURL: string;\n protected apiKey: string;\n protected apiSecret: string;\n\n private isSecure = false;\n private mainOptions: RequestOptions = {};\n\n constructor(apiEndPointURL: string, apiKey: string, apiSecret: string) {\n this.apiEndPointURL = apiEndPointURL;\n this.apiKey = apiKey;\n this.apiSecret = apiSecret;\n\n const url = new URL(apiEndPointURL);\n let port = url.protocol === 'https:' ? 443 : 80;\n this.isSecure = url.protocol === 'https:' ?? false;\n\n // use port if supplied with url\n if (url.port) {\n port = Number(url.port);\n }\n\n this.mainOptions = {\n hostname: url.hostname,\n path: url.pathname,\n method: 'POST',\n port,\n };\n }\n\n private prepareHeader = (body: string) => {\n const signature = createHmac('sha256', this.apiSecret)\n .update(body)\n .digest('hex');\n\n return {\n 'Content-Type': 'application/json',\n 'API-KEY': this.apiKey,\n 'HASH-SIGNATURE': signature,\n };\n };\n\n public sendRequest = async (path: string, body: any) => {\n return new Promise<APIResponse>((resolve) => {\n const output: APIResponse = {\n status: false,\n response: undefined,\n };\n\n const chunk = JSON.stringify(body);\n\n const options = { ...this.mainOptions };\n options.path += path;\n options.headers = this.prepareHeader(chunk);\n\n const req = (this.isSecure ? https : http).request(options, (res) => {\n const body: Array<Uint8Array> = [];\n res.on('data', (chunk) => body.push(chunk));\n\n res.on('end', () => {\n const resString = Buffer.concat(body).toString();\n\n try {\n output.status = true;\n output.response = JSON.parse(resString);\n } catch (error) {\n output.status = false;\n output.response = error;\n }\n\n resolve(output);\n });\n });\n\n req.on('error', (error) => {\n output.response = error.message;\n resolve(output);\n });\n\n req.write(chunk);\n req.end();\n });\n };\n}\n"],"names":[],"version":3,"file":"PlugNmeet.js.map","sourceRoot":"../"}