@wazo/sdk 0.38.6 → 0.38.9

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.
Files changed (118) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/api-client.test.js +142 -2
  3. package/esm/__tests__/web-rtc-client.test.js +249 -28
  4. package/esm/api/calld.js +8 -0
  5. package/esm/api/confd.js +134 -2
  6. package/esm/api-client.js +142 -2
  7. package/esm/checker/Checker.js +205 -25
  8. package/esm/checker/checks/aor.js +142 -2
  9. package/esm/checker/checks/api.js +142 -2
  10. package/esm/checker/checks/index.js +205 -25
  11. package/esm/checker/checks/wazo-websocket.js +2 -0
  12. package/esm/checker/checks/webrtc-transport.js +203 -25
  13. package/esm/checker/checks/webrtc.js +203 -25
  14. package/esm/domain/AdHocAPIConference.js +142 -2
  15. package/esm/domain/Features.js +142 -2
  16. package/esm/domain/Meeting.js +18 -0
  17. package/esm/domain/MeetingAuthorization.js +70 -0
  18. package/esm/domain/Phone/CTIPhone.js +142 -2
  19. package/esm/domain/Phone/WebRTCPhone.js +1 -3
  20. package/esm/domain/__tests__/Meeting.test.js +87 -1
  21. package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
  22. package/esm/index.js +249 -31
  23. package/esm/lib/WazoSessionDescriptionHandler.js +22 -1
  24. package/esm/service/CallApi.js +142 -2
  25. package/esm/service/getApiClient.js +142 -2
  26. package/esm/simple/Auth.js +249 -31
  27. package/esm/simple/Configuration.js +249 -31
  28. package/esm/simple/Directory.js +142 -2
  29. package/esm/simple/Phone.js +249 -31
  30. package/esm/simple/Websocket.js +3 -0
  31. package/esm/simple/index.js +249 -31
  32. package/esm/simple/room/LocalParticipant.js +249 -31
  33. package/esm/simple/room/Participant.js +249 -31
  34. package/esm/simple/room/RemoteParticipant.js +249 -31
  35. package/esm/simple/room/Room.js +249 -31
  36. package/esm/simple/room/SipRoom.js +249 -31
  37. package/esm/simple/room/Stream.js +249 -31
  38. package/esm/simple/room/__tests__/Participant.test.js +14745 -0
  39. package/esm/simple/room/__tests__/RemoteParticipant.test.js +249 -31
  40. package/esm/simple/utils.js +249 -31
  41. package/esm/utils/__tests__/object.test.js +57 -0
  42. package/esm/utils/__tests__/sdp.test.js +50 -0
  43. package/esm/utils/__tests__/string.test.js +30 -0
  44. package/esm/utils/object.js +24 -0
  45. package/esm/utils/sdp.js +19 -1
  46. package/esm/utils/string.js +10 -0
  47. package/esm/web-rtc-client.js +203 -25
  48. package/esm/websocket-client.js +3 -1
  49. package/lib/__tests__/api-client.test.js +142 -2
  50. package/lib/__tests__/web-rtc-client.test.js +249 -28
  51. package/lib/api/calld.js +8 -0
  52. package/lib/api/confd.js +134 -2
  53. package/lib/api-client.js +142 -2
  54. package/lib/checker/Checker.js +205 -25
  55. package/lib/checker/checks/aor.js +142 -2
  56. package/lib/checker/checks/api.js +142 -2
  57. package/lib/checker/checks/index.js +205 -25
  58. package/lib/checker/checks/wazo-websocket.js +2 -0
  59. package/lib/checker/checks/webrtc-transport.js +203 -25
  60. package/lib/checker/checks/webrtc.js +203 -25
  61. package/lib/domain/AdHocAPIConference.js +142 -2
  62. package/lib/domain/Features.js +142 -2
  63. package/lib/domain/Meeting.js +18 -0
  64. package/lib/domain/MeetingAuthorization.js +79 -0
  65. package/lib/domain/Phone/CTIPhone.js +142 -2
  66. package/lib/domain/Phone/WebRTCPhone.js +1 -3
  67. package/lib/domain/__tests__/Meeting.test.js +87 -1
  68. package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
  69. package/lib/index.js +249 -31
  70. package/lib/lib/WazoSessionDescriptionHandler.js +22 -1
  71. package/lib/service/CallApi.js +142 -2
  72. package/lib/service/getApiClient.js +142 -2
  73. package/lib/simple/Auth.js +249 -31
  74. package/lib/simple/Configuration.js +249 -31
  75. package/lib/simple/Directory.js +142 -2
  76. package/lib/simple/Phone.js +249 -31
  77. package/lib/simple/Websocket.js +3 -0
  78. package/lib/simple/index.js +249 -31
  79. package/lib/simple/room/LocalParticipant.js +249 -31
  80. package/lib/simple/room/Participant.js +249 -31
  81. package/lib/simple/room/RemoteParticipant.js +249 -31
  82. package/lib/simple/room/Room.js +249 -31
  83. package/lib/simple/room/SipRoom.js +249 -31
  84. package/lib/simple/room/Stream.js +249 -31
  85. package/lib/simple/room/__tests__/Participant.test.js +14755 -0
  86. package/lib/simple/room/__tests__/RemoteParticipant.test.js +249 -31
  87. package/lib/simple/utils.js +249 -31
  88. package/lib/utils/__tests__/object.test.js +59 -0
  89. package/lib/utils/__tests__/sdp.test.js +50 -0
  90. package/lib/utils/__tests__/string.test.js +32 -0
  91. package/lib/utils/object.js +28 -0
  92. package/lib/utils/sdp.js +19 -0
  93. package/lib/utils/string.js +14 -0
  94. package/lib/web-rtc-client.js +203 -25
  95. package/lib/websocket-client.js +3 -0
  96. package/package.json +2 -2
  97. package/src/__tests__/web-rtc-client.test.js +46 -3
  98. package/src/api/calld.js +8 -0
  99. package/src/api/confd.js +43 -2
  100. package/src/domain/Meeting.js +20 -0
  101. package/src/domain/MeetingAuthorization.js +67 -0
  102. package/src/domain/Phone/WebRTCPhone.js +1 -3
  103. package/src/domain/__tests__/Meeting.test.js +70 -1
  104. package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
  105. package/src/lib/WazoSessionDescriptionHandler.js +5 -2
  106. package/src/simple/room/Participant.js +40 -0
  107. package/src/simple/room/Room.js +2 -2
  108. package/src/simple/room/SipRoom.js +1 -1
  109. package/src/simple/room/__tests__/Participant.test.js +81 -0
  110. package/src/types/WebSocketMessage.js +7 -1
  111. package/src/utils/__tests__/object.test.js +35 -0
  112. package/src/utils/__tests__/sdp.test.js +33 -1
  113. package/src/utils/__tests__/string.test.js +23 -0
  114. package/src/utils/object.js +15 -0
  115. package/src/utils/sdp.js +18 -0
  116. package/src/utils/string.js +8 -0
  117. package/src/web-rtc-client.js +39 -22
  118. package/src/websocket-client.js +2 -0
@@ -3177,6 +3177,70 @@ class ExternalApp {
3177
3177
 
3178
3178
  //
3179
3179
 
3180
+ class MeetingAuthorization {
3181
+
3182
+
3183
+
3184
+
3185
+
3186
+
3187
+ constructor({
3188
+ meetingUuid,
3189
+ uuid,
3190
+ userUuid,
3191
+ userName,
3192
+ } = {}) {
3193
+ this.meetingUuid = meetingUuid;
3194
+ this.uuid = uuid;
3195
+ this.userUuid = userUuid;
3196
+ this.userName = userName;
3197
+ }
3198
+
3199
+ setStatus(status ) {
3200
+ this.status = status;
3201
+ }
3202
+
3203
+ getStatus() {
3204
+ return this.status;
3205
+ }
3206
+
3207
+ static parse(plain ) {
3208
+ const {
3209
+ meeting_uuid: meetingUuid,
3210
+ uuid,
3211
+ guest_uuid: userUuid,
3212
+ guest_name: userName,
3213
+ } = plain;
3214
+
3215
+ return new MeetingAuthorization({
3216
+ meetingUuid,
3217
+ uuid,
3218
+ userUuid,
3219
+ userName,
3220
+ });
3221
+ }
3222
+
3223
+ static parseMany(items ) {
3224
+ if (!items) {
3225
+ return [];
3226
+ }
3227
+ return items.map(MeetingAuthorization.parse);
3228
+ }
3229
+ }
3230
+
3231
+ //
3232
+
3233
+
3234
+
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+
3241
+
3242
+
3243
+
3180
3244
 
3181
3245
 
3182
3246
 
@@ -3187,6 +3251,7 @@ class ExternalApp {
3187
3251
 
3188
3252
 
3189
3253
 
3254
+
3190
3255
 
3191
3256
 
3192
3257
  class Meeting {
@@ -3201,6 +3266,8 @@ class Meeting {
3201
3266
 
3202
3267
 
3203
3268
 
3269
+
3270
+
3204
3271
 
3205
3272
  static parse(plain ) {
3206
3273
  return new Meeting({
@@ -3213,6 +3280,7 @@ class Meeting {
3213
3280
  extension: plain.exten,
3214
3281
  persistent: plain.persistent,
3215
3282
  creationTime: moment__default['default'](plain.creation_time).toDate(),
3283
+ requireAuthorization: plain.require_authorization,
3216
3284
  });
3217
3285
  }
3218
3286
 
@@ -3237,6 +3305,7 @@ class Meeting {
3237
3305
  extension,
3238
3306
  persistent,
3239
3307
  creationTime,
3308
+ requireAuthorization,
3240
3309
  } = {}) {
3241
3310
  this.guestSipAuthorization = guestSipAuthorization;
3242
3311
  this.uri = uri;
@@ -3247,6 +3316,7 @@ class Meeting {
3247
3316
  this.extension = extension;
3248
3317
  this.persistent = persistent;
3249
3318
  this.creationTime = creationTime;
3319
+ this.requireAuthorization = requireAuthorization;
3250
3320
 
3251
3321
  // Useful to compare instead of instanceof with minified code
3252
3322
  this.type = 'Meeting';
@@ -3257,8 +3327,32 @@ class Meeting {
3257
3327
  const [username, secret] = atob(this.guestSipAuthorization).split(':');
3258
3328
  return { username, secret };
3259
3329
  }
3330
+
3260
3331
  }
3261
3332
 
3333
+ //
3334
+
3335
+ const camelToUnderscore = (key ) => {
3336
+ if (typeof key !== 'string') {
3337
+ throw new Error('Input is not a string');
3338
+ }
3339
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
3340
+ };
3341
+
3342
+ //
3343
+
3344
+ const convertKeysFromCamelToUnderscore = (args ) => {
3345
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
3346
+ throw new Error('Input is not an object');
3347
+ }
3348
+
3349
+ return Object.keys(args).reduce((acc, key) => {
3350
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
3351
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
3352
+ return acc;
3353
+ }, {});
3354
+ };
3355
+
3262
3356
  /* */
3263
3357
 
3264
3358
  var confdMethods = (client , baseUrl ) => ({
@@ -3327,8 +3421,18 @@ var confdMethods = (client , baseUrl ) => ({
3327
3421
  getMyMeetings: () =>
3328
3422
  client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
3329
3423
 
3330
- createMyMeeting: (name , persistent ) =>
3331
- client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
3424
+ createMyMeeting: (args ) =>
3425
+ client
3426
+ .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
3427
+ .then(Meeting.parse),
3428
+
3429
+ updateMyMeeting: (meetingUuid , data ) =>
3430
+ client.put(
3431
+ `${baseUrl}/users/me/meetings/${meetingUuid}`,
3432
+ convertKeysFromCamelToUnderscore(data),
3433
+ null,
3434
+ ApiRequester.successResponseParser,
3435
+ ),
3332
3436
 
3333
3437
  deleteMyMeeting: (meetingUuid ) =>
3334
3438
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -3336,8 +3440,36 @@ var confdMethods = (client , baseUrl ) => ({
3336
3440
  getMeeting: (meetingUuid ) =>
3337
3441
  client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
3338
3442
 
3443
+ meetingAuthorizations: (meetingUuid ) =>
3444
+ client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
3445
+
3446
+ meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
3447
+ client.put(
3448
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
3449
+ {},
3450
+ null,
3451
+ ApiRequester.successResponseParser,
3452
+ ),
3453
+
3454
+ meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
3455
+ client.put(
3456
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
3457
+ {},
3458
+ null,
3459
+ ApiRequester.successResponseParser,
3460
+ ),
3461
+
3339
3462
  guestGetMeeting: (meetingUuid ) =>
3340
3463
  client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
3464
+
3465
+ guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
3466
+ client
3467
+ .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
3468
+ .then(MeetingAuthorization.parse),
3469
+
3470
+ guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
3471
+ client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
3472
+
3341
3473
  });
3342
3474
 
3343
3475
  //
@@ -4213,6 +4345,14 @@ var calldMethods = (client , baseUrl ) => ({
4213
4345
  getMeetingParticipantsAsUser: async (meetingUuid ) =>
4214
4346
  client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
4215
4347
 
4348
+ banMeetingParticipant: (meetingUuid , participantUuid ) =>
4349
+ client.delete(
4350
+ `${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
4351
+ null,
4352
+ null,
4353
+ ApiRequester.successResponseParser,
4354
+ ),
4355
+
4216
4356
  listTrunks: () => client.get(`${baseUrl}/trunks`),
4217
4357
 
4218
4358
  mute: (callId ) =>
@@ -2633,6 +2633,70 @@ class ExternalApp {
2633
2633
 
2634
2634
  //
2635
2635
 
2636
+ class MeetingAuthorization {
2637
+
2638
+
2639
+
2640
+
2641
+
2642
+
2643
+ constructor({
2644
+ meetingUuid,
2645
+ uuid,
2646
+ userUuid,
2647
+ userName,
2648
+ } = {}) {
2649
+ this.meetingUuid = meetingUuid;
2650
+ this.uuid = uuid;
2651
+ this.userUuid = userUuid;
2652
+ this.userName = userName;
2653
+ }
2654
+
2655
+ setStatus(status ) {
2656
+ this.status = status;
2657
+ }
2658
+
2659
+ getStatus() {
2660
+ return this.status;
2661
+ }
2662
+
2663
+ static parse(plain ) {
2664
+ const {
2665
+ meeting_uuid: meetingUuid,
2666
+ uuid,
2667
+ guest_uuid: userUuid,
2668
+ guest_name: userName,
2669
+ } = plain;
2670
+
2671
+ return new MeetingAuthorization({
2672
+ meetingUuid,
2673
+ uuid,
2674
+ userUuid,
2675
+ userName,
2676
+ });
2677
+ }
2678
+
2679
+ static parseMany(items ) {
2680
+ if (!items) {
2681
+ return [];
2682
+ }
2683
+ return items.map(MeetingAuthorization.parse);
2684
+ }
2685
+ }
2686
+
2687
+ //
2688
+
2689
+
2690
+
2691
+
2692
+
2693
+
2694
+
2695
+
2696
+
2697
+
2698
+
2699
+
2636
2700
 
2637
2701
 
2638
2702
 
@@ -2643,6 +2707,7 @@ class ExternalApp {
2643
2707
 
2644
2708
 
2645
2709
 
2710
+
2646
2711
 
2647
2712
 
2648
2713
  class Meeting {
@@ -2657,6 +2722,8 @@ class Meeting {
2657
2722
 
2658
2723
 
2659
2724
 
2725
+
2726
+
2660
2727
 
2661
2728
  static parse(plain ) {
2662
2729
  return new Meeting({
@@ -2669,6 +2736,7 @@ class Meeting {
2669
2736
  extension: plain.exten,
2670
2737
  persistent: plain.persistent,
2671
2738
  creationTime: moment__default['default'](plain.creation_time).toDate(),
2739
+ requireAuthorization: plain.require_authorization,
2672
2740
  });
2673
2741
  }
2674
2742
 
@@ -2693,6 +2761,7 @@ class Meeting {
2693
2761
  extension,
2694
2762
  persistent,
2695
2763
  creationTime,
2764
+ requireAuthorization,
2696
2765
  } = {}) {
2697
2766
  this.guestSipAuthorization = guestSipAuthorization;
2698
2767
  this.uri = uri;
@@ -2703,6 +2772,7 @@ class Meeting {
2703
2772
  this.extension = extension;
2704
2773
  this.persistent = persistent;
2705
2774
  this.creationTime = creationTime;
2775
+ this.requireAuthorization = requireAuthorization;
2706
2776
 
2707
2777
  // Useful to compare instead of instanceof with minified code
2708
2778
  this.type = 'Meeting';
@@ -2713,8 +2783,32 @@ class Meeting {
2713
2783
  const [username, secret] = atob(this.guestSipAuthorization).split(':');
2714
2784
  return { username, secret };
2715
2785
  }
2786
+
2716
2787
  }
2717
2788
 
2789
+ //
2790
+
2791
+ const camelToUnderscore = (key ) => {
2792
+ if (typeof key !== 'string') {
2793
+ throw new Error('Input is not a string');
2794
+ }
2795
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
2796
+ };
2797
+
2798
+ //
2799
+
2800
+ const convertKeysFromCamelToUnderscore = (args ) => {
2801
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
2802
+ throw new Error('Input is not an object');
2803
+ }
2804
+
2805
+ return Object.keys(args).reduce((acc, key) => {
2806
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
2807
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
2808
+ return acc;
2809
+ }, {});
2810
+ };
2811
+
2718
2812
  /* */
2719
2813
 
2720
2814
  var confdMethods = (client , baseUrl ) => ({
@@ -2783,8 +2877,18 @@ var confdMethods = (client , baseUrl ) => ({
2783
2877
  getMyMeetings: () =>
2784
2878
  client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
2785
2879
 
2786
- createMyMeeting: (name , persistent ) =>
2787
- client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
2880
+ createMyMeeting: (args ) =>
2881
+ client
2882
+ .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
2883
+ .then(Meeting.parse),
2884
+
2885
+ updateMyMeeting: (meetingUuid , data ) =>
2886
+ client.put(
2887
+ `${baseUrl}/users/me/meetings/${meetingUuid}`,
2888
+ convertKeysFromCamelToUnderscore(data),
2889
+ null,
2890
+ ApiRequester.successResponseParser,
2891
+ ),
2788
2892
 
2789
2893
  deleteMyMeeting: (meetingUuid ) =>
2790
2894
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -2792,8 +2896,36 @@ var confdMethods = (client , baseUrl ) => ({
2792
2896
  getMeeting: (meetingUuid ) =>
2793
2897
  client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
2794
2898
 
2899
+ meetingAuthorizations: (meetingUuid ) =>
2900
+ client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
2901
+
2902
+ meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
2903
+ client.put(
2904
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
2905
+ {},
2906
+ null,
2907
+ ApiRequester.successResponseParser,
2908
+ ),
2909
+
2910
+ meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
2911
+ client.put(
2912
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
2913
+ {},
2914
+ null,
2915
+ ApiRequester.successResponseParser,
2916
+ ),
2917
+
2795
2918
  guestGetMeeting: (meetingUuid ) =>
2796
2919
  client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
2920
+
2921
+ guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
2922
+ client
2923
+ .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
2924
+ .then(MeetingAuthorization.parse),
2925
+
2926
+ guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
2927
+ client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
2928
+
2797
2929
  });
2798
2930
 
2799
2931
  //
@@ -4215,6 +4347,14 @@ var calldMethods = (client , baseUrl ) => ({
4215
4347
  getMeetingParticipantsAsUser: async (meetingUuid ) =>
4216
4348
  client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
4217
4349
 
4350
+ banMeetingParticipant: (meetingUuid , participantUuid ) =>
4351
+ client.delete(
4352
+ `${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
4353
+ null,
4354
+ null,
4355
+ ApiRequester.successResponseParser,
4356
+ ),
4357
+
4218
4358
  listTrunks: () => client.get(`${baseUrl}/trunks`),
4219
4359
 
4220
4360
  mute: (callId ) =>