@wazo/sdk 0.38.7 → 0.38.10
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/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +163 -2
- package/esm/__tests__/web-rtc-client.test.js +248 -27
- package/esm/api/auth.js +12 -0
- package/esm/api/calld.js +8 -0
- package/esm/api/confd.js +134 -2
- package/esm/api/ctid-ng.js +1 -0
- package/esm/api-client.js +163 -2
- package/esm/checker/Checker.js +204 -24
- package/esm/checker/checks/aor.js +163 -2
- package/esm/checker/checks/api.js +163 -2
- package/esm/checker/checks/index.js +204 -24
- package/esm/checker/checks/wazo-websocket.js +2 -0
- package/esm/checker/checks/webrtc-transport.js +202 -24
- package/esm/checker/checks/webrtc.js +202 -24
- package/esm/domain/AdHocAPIConference.js +170 -4
- package/esm/domain/Features.js +170 -4
- package/esm/domain/Meeting.js +18 -0
- package/esm/domain/MeetingAuthorization.js +70 -0
- package/esm/domain/Phone/CTIPhone.js +170 -4
- package/esm/domain/Phone/WebRTCPhone.js +2 -3
- package/esm/domain/__tests__/Meeting.test.js +87 -1
- package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
- package/esm/index.js +300 -36
- package/esm/service/CallApi.js +170 -4
- package/esm/service/getApiClient.js +176 -5
- package/esm/simple/Auth.js +301 -37
- package/esm/simple/Configuration.js +300 -36
- package/esm/simple/Directory.js +170 -4
- package/esm/simple/Phone.js +300 -36
- package/esm/simple/Softphone.js +5 -0
- package/esm/simple/Websocket.js +3 -0
- package/esm/simple/index.js +300 -36
- package/esm/simple/room/LocalParticipant.js +300 -36
- package/esm/simple/room/Participant.js +300 -36
- package/esm/simple/room/RemoteParticipant.js +300 -36
- package/esm/simple/room/Room.js +300 -36
- package/esm/simple/room/SipRoom.js +300 -36
- package/esm/simple/room/Stream.js +300 -36
- package/esm/simple/room/__tests__/Participant.test.js +14812 -0
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +300 -36
- package/esm/simple/utils.js +300 -36
- package/esm/utils/__tests__/object.test.js +57 -0
- package/esm/utils/__tests__/string.test.js +30 -0
- package/esm/utils/object.js +24 -0
- package/esm/utils/string.js +10 -0
- package/esm/web-rtc-client.js +202 -24
- package/esm/websocket-client.js +3 -1
- package/lib/__tests__/api-client.test.js +163 -2
- package/lib/__tests__/web-rtc-client.test.js +248 -27
- package/lib/api/auth.js +12 -0
- package/lib/api/calld.js +8 -0
- package/lib/api/confd.js +134 -2
- package/lib/api/ctid-ng.js +1 -0
- package/lib/api-client.js +163 -2
- package/lib/checker/Checker.js +204 -24
- package/lib/checker/checks/aor.js +163 -2
- package/lib/checker/checks/api.js +163 -2
- package/lib/checker/checks/index.js +204 -24
- package/lib/checker/checks/wazo-websocket.js +2 -0
- package/lib/checker/checks/webrtc-transport.js +202 -24
- package/lib/checker/checks/webrtc.js +202 -24
- package/lib/domain/AdHocAPIConference.js +170 -4
- package/lib/domain/Features.js +170 -4
- package/lib/domain/Meeting.js +18 -0
- package/lib/domain/MeetingAuthorization.js +79 -0
- package/lib/domain/Phone/CTIPhone.js +170 -4
- package/lib/domain/Phone/WebRTCPhone.js +2 -3
- package/lib/domain/__tests__/Meeting.test.js +87 -1
- package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
- package/lib/index.js +300 -36
- package/lib/service/CallApi.js +170 -4
- package/lib/service/getApiClient.js +176 -4
- package/lib/simple/Auth.js +301 -36
- package/lib/simple/Configuration.js +300 -36
- package/lib/simple/Directory.js +170 -4
- package/lib/simple/Phone.js +300 -36
- package/lib/simple/Softphone.js +5 -0
- package/lib/simple/Websocket.js +3 -0
- package/lib/simple/index.js +300 -36
- package/lib/simple/room/LocalParticipant.js +300 -36
- package/lib/simple/room/Participant.js +300 -36
- package/lib/simple/room/RemoteParticipant.js +300 -36
- package/lib/simple/room/Room.js +300 -36
- package/lib/simple/room/SipRoom.js +300 -36
- package/lib/simple/room/Stream.js +300 -36
- package/lib/simple/room/__tests__/Participant.test.js +14822 -0
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +300 -36
- package/lib/simple/utils.js +300 -36
- package/lib/utils/__tests__/object.test.js +59 -0
- package/lib/utils/__tests__/string.test.js +32 -0
- package/lib/utils/object.js +28 -0
- package/lib/utils/string.js +14 -0
- package/lib/web-rtc-client.js +202 -24
- package/lib/websocket-client.js +3 -0
- package/package.json +1 -1
- package/src/__tests__/web-rtc-client.test.js +46 -3
- package/src/api/auth.js +12 -0
- package/src/api/calld.js +8 -0
- package/src/api/confd.js +43 -2
- package/src/api-client.js +8 -0
- package/src/domain/Meeting.js +20 -0
- package/src/domain/MeetingAuthorization.js +67 -0
- package/src/domain/Phone/WebRTCPhone.js +1 -3
- package/src/domain/__tests__/Meeting.test.js +70 -1
- package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
- package/src/service/getApiClient.js +13 -2
- package/src/simple/Auth.js +35 -4
- package/src/simple/Softphone.js +5 -0
- package/src/simple/index.js +2 -1
- package/src/simple/room/Participant.js +40 -0
- package/src/simple/room/Room.js +2 -2
- package/src/simple/room/SipRoom.js +1 -1
- package/src/simple/room/__tests__/Participant.test.js +81 -0
- package/src/types/WebSocketMessage.js +7 -1
- package/src/utils/__tests__/object.test.js +35 -0
- package/src/utils/__tests__/string.test.js +23 -0
- package/src/utils/object.js +15 -0
- package/src/utils/string.js +8 -0
- package/src/web-rtc-client.js +39 -22
- package/src/websocket-client.js +2 -0
package/lib/domain/Meeting.js
CHANGED
|
@@ -19,6 +19,17 @@ var newFrom = (instance , ToClass ) => {
|
|
|
19
19
|
|
|
20
20
|
//
|
|
21
21
|
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
22
33
|
|
|
23
34
|
|
|
24
35
|
|
|
@@ -29,6 +40,7 @@ var newFrom = (instance , ToClass ) => {
|
|
|
29
40
|
|
|
30
41
|
|
|
31
42
|
|
|
43
|
+
|
|
32
44
|
|
|
33
45
|
|
|
34
46
|
class Meeting {
|
|
@@ -43,6 +55,8 @@ class Meeting {
|
|
|
43
55
|
|
|
44
56
|
|
|
45
57
|
|
|
58
|
+
|
|
59
|
+
|
|
46
60
|
|
|
47
61
|
static parse(plain ) {
|
|
48
62
|
return new Meeting({
|
|
@@ -55,6 +69,7 @@ class Meeting {
|
|
|
55
69
|
extension: plain.exten,
|
|
56
70
|
persistent: plain.persistent,
|
|
57
71
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
72
|
+
requireAuthorization: plain.require_authorization,
|
|
58
73
|
});
|
|
59
74
|
}
|
|
60
75
|
|
|
@@ -79,6 +94,7 @@ class Meeting {
|
|
|
79
94
|
extension,
|
|
80
95
|
persistent,
|
|
81
96
|
creationTime,
|
|
97
|
+
requireAuthorization,
|
|
82
98
|
} = {}) {
|
|
83
99
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
84
100
|
this.uri = uri;
|
|
@@ -89,6 +105,7 @@ class Meeting {
|
|
|
89
105
|
this.extension = extension;
|
|
90
106
|
this.persistent = persistent;
|
|
91
107
|
this.creationTime = creationTime;
|
|
108
|
+
this.requireAuthorization = requireAuthorization;
|
|
92
109
|
|
|
93
110
|
// Useful to compare instead of instanceof with minified code
|
|
94
111
|
this.type = 'Meeting';
|
|
@@ -99,6 +116,7 @@ class Meeting {
|
|
|
99
116
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
100
117
|
return { username, secret };
|
|
101
118
|
}
|
|
119
|
+
|
|
102
120
|
}
|
|
103
121
|
|
|
104
122
|
module.exports = Meeting;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
const PENDING = 'pending';
|
|
16
|
+
const ACCEPTED = 'accepted';
|
|
17
|
+
const REJECTED = 'rejected';
|
|
18
|
+
const POST_PROCESSING = 'post_processing';
|
|
19
|
+
const POST_PROCESSED_SUCCESS = 'post_processed_success';
|
|
20
|
+
const POST_PROCESSED_ERROR = 'post_processed_error';
|
|
21
|
+
|
|
22
|
+
class MeetingAuthorization {
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
constructor({
|
|
30
|
+
meetingUuid,
|
|
31
|
+
uuid,
|
|
32
|
+
userUuid,
|
|
33
|
+
userName,
|
|
34
|
+
} = {}) {
|
|
35
|
+
this.meetingUuid = meetingUuid;
|
|
36
|
+
this.uuid = uuid;
|
|
37
|
+
this.userUuid = userUuid;
|
|
38
|
+
this.userName = userName;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
setStatus(status ) {
|
|
42
|
+
this.status = status;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
getStatus() {
|
|
46
|
+
return this.status;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static parse(plain ) {
|
|
50
|
+
const {
|
|
51
|
+
meeting_uuid: meetingUuid,
|
|
52
|
+
uuid,
|
|
53
|
+
guest_uuid: userUuid,
|
|
54
|
+
guest_name: userName,
|
|
55
|
+
} = plain;
|
|
56
|
+
|
|
57
|
+
return new MeetingAuthorization({
|
|
58
|
+
meetingUuid,
|
|
59
|
+
uuid,
|
|
60
|
+
userUuid,
|
|
61
|
+
userName,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static parseMany(items ) {
|
|
66
|
+
if (!items) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
return items.map(MeetingAuthorization.parse);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
exports.ACCEPTED = ACCEPTED;
|
|
74
|
+
exports.PENDING = PENDING;
|
|
75
|
+
exports.POST_PROCESSED_ERROR = POST_PROCESSED_ERROR;
|
|
76
|
+
exports.POST_PROCESSED_SUCCESS = POST_PROCESSED_SUCCESS;
|
|
77
|
+
exports.POST_PROCESSING = POST_PROCESSING;
|
|
78
|
+
exports.REJECTED = REJECTED;
|
|
79
|
+
exports.default = MeetingAuthorization;
|
|
@@ -3184,6 +3184,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
3184
3184
|
|
|
3185
3185
|
|
|
3186
3186
|
|
|
3187
|
+
|
|
3187
3188
|
) {
|
|
3188
3189
|
const body = {
|
|
3189
3190
|
backend: params.backend || DEFAULT_BACKEND_USER,
|
|
@@ -3204,9 +3205,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
3204
3205
|
}
|
|
3205
3206
|
|
|
3206
3207
|
if (params.tenantId) {
|
|
3208
|
+
console.warn('Use of `tenantId` is deprecated when calling logIn() method, use `domainName` instead.');
|
|
3207
3209
|
body.tenant_id = params.tenantId;
|
|
3208
3210
|
}
|
|
3209
3211
|
|
|
3212
|
+
if (params.domainName) {
|
|
3213
|
+
body.domain_name = params.domainName;
|
|
3214
|
+
}
|
|
3215
|
+
|
|
3210
3216
|
return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
|
|
3211
3217
|
},
|
|
3212
3218
|
|
|
@@ -3219,6 +3225,7 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
3219
3225
|
expiration ,
|
|
3220
3226
|
isMobile = false,
|
|
3221
3227
|
tenantId ,
|
|
3228
|
+
domainName ,
|
|
3222
3229
|
) => {
|
|
3223
3230
|
const body = {
|
|
3224
3231
|
backend: backend || DEFAULT_BACKEND_USER,
|
|
@@ -3228,9 +3235,14 @@ var authMethods = (client , baseUrl ) => ({
|
|
|
3228
3235
|
};
|
|
3229
3236
|
|
|
3230
3237
|
if (tenantId) {
|
|
3238
|
+
console.warn('Use of `tenantId` is deprecated when calling refreshToken() method, use `domainName` instead.');
|
|
3231
3239
|
body.tenant_id = tenantId;
|
|
3232
3240
|
}
|
|
3233
3241
|
|
|
3242
|
+
if (domainName) {
|
|
3243
|
+
body.domain_name = domainName;
|
|
3244
|
+
}
|
|
3245
|
+
|
|
3234
3246
|
const headers = {
|
|
3235
3247
|
'Content-Type': 'application/json',
|
|
3236
3248
|
...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
|
|
@@ -3600,6 +3612,70 @@ class ExternalApp {
|
|
|
3600
3612
|
|
|
3601
3613
|
//
|
|
3602
3614
|
|
|
3615
|
+
class MeetingAuthorization {
|
|
3616
|
+
|
|
3617
|
+
|
|
3618
|
+
|
|
3619
|
+
|
|
3620
|
+
|
|
3621
|
+
|
|
3622
|
+
constructor({
|
|
3623
|
+
meetingUuid,
|
|
3624
|
+
uuid,
|
|
3625
|
+
userUuid,
|
|
3626
|
+
userName,
|
|
3627
|
+
} = {}) {
|
|
3628
|
+
this.meetingUuid = meetingUuid;
|
|
3629
|
+
this.uuid = uuid;
|
|
3630
|
+
this.userUuid = userUuid;
|
|
3631
|
+
this.userName = userName;
|
|
3632
|
+
}
|
|
3633
|
+
|
|
3634
|
+
setStatus(status ) {
|
|
3635
|
+
this.status = status;
|
|
3636
|
+
}
|
|
3637
|
+
|
|
3638
|
+
getStatus() {
|
|
3639
|
+
return this.status;
|
|
3640
|
+
}
|
|
3641
|
+
|
|
3642
|
+
static parse(plain ) {
|
|
3643
|
+
const {
|
|
3644
|
+
meeting_uuid: meetingUuid,
|
|
3645
|
+
uuid,
|
|
3646
|
+
guest_uuid: userUuid,
|
|
3647
|
+
guest_name: userName,
|
|
3648
|
+
} = plain;
|
|
3649
|
+
|
|
3650
|
+
return new MeetingAuthorization({
|
|
3651
|
+
meetingUuid,
|
|
3652
|
+
uuid,
|
|
3653
|
+
userUuid,
|
|
3654
|
+
userName,
|
|
3655
|
+
});
|
|
3656
|
+
}
|
|
3657
|
+
|
|
3658
|
+
static parseMany(items ) {
|
|
3659
|
+
if (!items) {
|
|
3660
|
+
return [];
|
|
3661
|
+
}
|
|
3662
|
+
return items.map(MeetingAuthorization.parse);
|
|
3663
|
+
}
|
|
3664
|
+
}
|
|
3665
|
+
|
|
3666
|
+
//
|
|
3667
|
+
|
|
3668
|
+
|
|
3669
|
+
|
|
3670
|
+
|
|
3671
|
+
|
|
3672
|
+
|
|
3673
|
+
|
|
3674
|
+
|
|
3675
|
+
|
|
3676
|
+
|
|
3677
|
+
|
|
3678
|
+
|
|
3603
3679
|
|
|
3604
3680
|
|
|
3605
3681
|
|
|
@@ -3610,6 +3686,7 @@ class ExternalApp {
|
|
|
3610
3686
|
|
|
3611
3687
|
|
|
3612
3688
|
|
|
3689
|
+
|
|
3613
3690
|
|
|
3614
3691
|
|
|
3615
3692
|
class Meeting {
|
|
@@ -3624,6 +3701,8 @@ class Meeting {
|
|
|
3624
3701
|
|
|
3625
3702
|
|
|
3626
3703
|
|
|
3704
|
+
|
|
3705
|
+
|
|
3627
3706
|
|
|
3628
3707
|
static parse(plain ) {
|
|
3629
3708
|
return new Meeting({
|
|
@@ -3636,6 +3715,7 @@ class Meeting {
|
|
|
3636
3715
|
extension: plain.exten,
|
|
3637
3716
|
persistent: plain.persistent,
|
|
3638
3717
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3718
|
+
requireAuthorization: plain.require_authorization,
|
|
3639
3719
|
});
|
|
3640
3720
|
}
|
|
3641
3721
|
|
|
@@ -3660,6 +3740,7 @@ class Meeting {
|
|
|
3660
3740
|
extension,
|
|
3661
3741
|
persistent,
|
|
3662
3742
|
creationTime,
|
|
3743
|
+
requireAuthorization,
|
|
3663
3744
|
} = {}) {
|
|
3664
3745
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3665
3746
|
this.uri = uri;
|
|
@@ -3670,6 +3751,7 @@ class Meeting {
|
|
|
3670
3751
|
this.extension = extension;
|
|
3671
3752
|
this.persistent = persistent;
|
|
3672
3753
|
this.creationTime = creationTime;
|
|
3754
|
+
this.requireAuthorization = requireAuthorization;
|
|
3673
3755
|
|
|
3674
3756
|
// Useful to compare instead of instanceof with minified code
|
|
3675
3757
|
this.type = 'Meeting';
|
|
@@ -3680,8 +3762,32 @@ class Meeting {
|
|
|
3680
3762
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
3681
3763
|
return { username, secret };
|
|
3682
3764
|
}
|
|
3765
|
+
|
|
3683
3766
|
}
|
|
3684
3767
|
|
|
3768
|
+
//
|
|
3769
|
+
|
|
3770
|
+
const camelToUnderscore = (key ) => {
|
|
3771
|
+
if (typeof key !== 'string') {
|
|
3772
|
+
throw new Error('Input is not a string');
|
|
3773
|
+
}
|
|
3774
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
3775
|
+
};
|
|
3776
|
+
|
|
3777
|
+
//
|
|
3778
|
+
|
|
3779
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
3780
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
3781
|
+
throw new Error('Input is not an object');
|
|
3782
|
+
}
|
|
3783
|
+
|
|
3784
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
3785
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
3786
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
3787
|
+
return acc;
|
|
3788
|
+
}, {});
|
|
3789
|
+
};
|
|
3790
|
+
|
|
3685
3791
|
/* */
|
|
3686
3792
|
|
|
3687
3793
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -3750,8 +3856,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3750
3856
|
getMyMeetings: () =>
|
|
3751
3857
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3752
3858
|
|
|
3753
|
-
createMyMeeting: (
|
|
3754
|
-
client
|
|
3859
|
+
createMyMeeting: (args ) =>
|
|
3860
|
+
client
|
|
3861
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
3862
|
+
.then(Meeting.parse),
|
|
3863
|
+
|
|
3864
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
3865
|
+
client.put(
|
|
3866
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
3867
|
+
convertKeysFromCamelToUnderscore(data),
|
|
3868
|
+
null,
|
|
3869
|
+
ApiRequester.successResponseParser,
|
|
3870
|
+
),
|
|
3755
3871
|
|
|
3756
3872
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3757
3873
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3759,8 +3875,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3759
3875
|
getMeeting: (meetingUuid ) =>
|
|
3760
3876
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3761
3877
|
|
|
3878
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
3879
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
3880
|
+
|
|
3881
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
3882
|
+
client.put(
|
|
3883
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
3884
|
+
{},
|
|
3885
|
+
null,
|
|
3886
|
+
ApiRequester.successResponseParser,
|
|
3887
|
+
),
|
|
3888
|
+
|
|
3889
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
3890
|
+
client.put(
|
|
3891
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
3892
|
+
{},
|
|
3893
|
+
null,
|
|
3894
|
+
ApiRequester.successResponseParser,
|
|
3895
|
+
),
|
|
3896
|
+
|
|
3762
3897
|
guestGetMeeting: (meetingUuid ) =>
|
|
3763
3898
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3899
|
+
|
|
3900
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
3901
|
+
client
|
|
3902
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
3903
|
+
.then(MeetingAuthorization.parse),
|
|
3904
|
+
|
|
3905
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
3906
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
3907
|
+
|
|
3764
3908
|
});
|
|
3765
3909
|
|
|
3766
3910
|
//
|
|
@@ -4629,6 +4773,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4629
4773
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4630
4774
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4631
4775
|
|
|
4776
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4777
|
+
client.delete(
|
|
4778
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4779
|
+
null,
|
|
4780
|
+
null,
|
|
4781
|
+
ApiRequester.successResponseParser,
|
|
4782
|
+
),
|
|
4783
|
+
|
|
4632
4784
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4633
4785
|
|
|
4634
4786
|
mute: (callId ) =>
|
|
@@ -5006,6 +5158,7 @@ class ApiClient {
|
|
|
5006
5158
|
|
|
5007
5159
|
|
|
5008
5160
|
|
|
5161
|
+
|
|
5009
5162
|
|
|
5010
5163
|
|
|
5011
5164
|
|
|
@@ -5047,6 +5200,7 @@ class ApiClient {
|
|
|
5047
5200
|
refreshToken: this.refreshToken,
|
|
5048
5201
|
refreshBackend: this.refreshBackend,
|
|
5049
5202
|
refreshTenantId: this.refreshTenantId,
|
|
5203
|
+
refreshDomainName: this.refreshDomainName,
|
|
5050
5204
|
refreshExpiration: this.refreshExpiration,
|
|
5051
5205
|
isMobile: this.isMobile,
|
|
5052
5206
|
});
|
|
@@ -5062,6 +5216,7 @@ class ApiClient {
|
|
|
5062
5216
|
this.refreshExpiration,
|
|
5063
5217
|
this.isMobile,
|
|
5064
5218
|
this.refreshTenantId,
|
|
5219
|
+
this.refreshDomainName,
|
|
5065
5220
|
);
|
|
5066
5221
|
|
|
5067
5222
|
logger$1.info('token refreshed', { token: session.token });
|
|
@@ -5115,9 +5270,14 @@ class ApiClient {
|
|
|
5115
5270
|
}
|
|
5116
5271
|
|
|
5117
5272
|
setRefreshTenantId(tenantId ) {
|
|
5273
|
+
console.warn('Use of `setRefreshTenantId` is deprecated, use `setRefreshDomainName` instead');
|
|
5118
5274
|
this.refreshTenantId = tenantId;
|
|
5119
5275
|
}
|
|
5120
5276
|
|
|
5277
|
+
setRefreshDomainName(domainName ) {
|
|
5278
|
+
this.refreshDomainName = domainName;
|
|
5279
|
+
}
|
|
5280
|
+
|
|
5121
5281
|
setIsMobile(isMobile ) {
|
|
5122
5282
|
this.isMobile = isMobile;
|
|
5123
5283
|
}
|
|
@@ -5142,6 +5302,7 @@ global.wazoClientId = global.wazoClientId || {};
|
|
|
5142
5302
|
global.wazoClientToken = global.wazoClientToken || {};
|
|
5143
5303
|
global.wazoRefreshToken = global.wazoRefreshToken || {};
|
|
5144
5304
|
global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
|
|
5305
|
+
global.wazoRefreshDomainName = global.wazoRefreshDomainName || {};
|
|
5145
5306
|
global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
|
|
5146
5307
|
global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
|
|
5147
5308
|
global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
|
|
@@ -5151,6 +5312,7 @@ global.wazoFetchOptions = global.wazoFetchOptions || {};
|
|
|
5151
5312
|
|
|
5152
5313
|
const fillClient = (apiClient ) => {
|
|
5153
5314
|
const { server, token, clientId } = apiClient.client;
|
|
5315
|
+
const tenantId = global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId;
|
|
5154
5316
|
|
|
5155
5317
|
// try with null server when dealing with non-related server info
|
|
5156
5318
|
apiClient.setToken(global.wazoClientToken[server] || global.wazoClientToken[null] || token);
|
|
@@ -5159,8 +5321,12 @@ const fillClient = (apiClient ) => {
|
|
|
5159
5321
|
|
|
5160
5322
|
apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
|
|
5161
5323
|
|
|
5162
|
-
|
|
5163
|
-
|
|
5324
|
+
if (tenantId) {
|
|
5325
|
+
apiClient.setRefreshTenantId(tenantId);
|
|
5326
|
+
}
|
|
5327
|
+
|
|
5328
|
+
apiClient.setRefreshDomainName(
|
|
5329
|
+
global.wazoRefreshDomainName[server] || global.wazoRefreshDomainName[null] || apiClient.refreshDomainName,
|
|
5164
5330
|
);
|
|
5165
5331
|
|
|
5166
5332
|
apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
|
|
@@ -903,6 +903,7 @@ global.wazoClientId = global.wazoClientId || {};
|
|
|
903
903
|
global.wazoClientToken = global.wazoClientToken || {};
|
|
904
904
|
global.wazoRefreshToken = global.wazoRefreshToken || {};
|
|
905
905
|
global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
|
|
906
|
+
global.wazoRefreshDomainName = global.wazoRefreshDomainName || {};
|
|
906
907
|
global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
|
|
907
908
|
global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
|
|
908
909
|
global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
|
|
@@ -1442,9 +1443,7 @@ class WebRTCPhone extends Emitter {
|
|
|
1442
1443
|
|
|
1443
1444
|
try {
|
|
1444
1445
|
if (this.currentScreenShare.stream) {
|
|
1445
|
-
this.currentScreenShare.stream.getTracks()
|
|
1446
|
-
.filter(track => track.kind === 'video')
|
|
1447
|
-
.forEach(track => track.stop());
|
|
1446
|
+
this.currentScreenShare.stream.getTracks().forEach(track => track.stop());
|
|
1448
1447
|
}
|
|
1449
1448
|
|
|
1450
1449
|
if (restoreLocalStream) {
|
|
@@ -19,6 +19,17 @@ var newFrom = (instance , ToClass ) => {
|
|
|
19
19
|
|
|
20
20
|
//
|
|
21
21
|
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
22
33
|
|
|
23
34
|
|
|
24
35
|
|
|
@@ -29,6 +40,7 @@ var newFrom = (instance , ToClass ) => {
|
|
|
29
40
|
|
|
30
41
|
|
|
31
42
|
|
|
43
|
+
|
|
32
44
|
|
|
33
45
|
|
|
34
46
|
class Meeting {
|
|
@@ -43,6 +55,8 @@ class Meeting {
|
|
|
43
55
|
|
|
44
56
|
|
|
45
57
|
|
|
58
|
+
|
|
59
|
+
|
|
46
60
|
|
|
47
61
|
static parse(plain ) {
|
|
48
62
|
return new Meeting({
|
|
@@ -55,6 +69,7 @@ class Meeting {
|
|
|
55
69
|
extension: plain.exten,
|
|
56
70
|
persistent: plain.persistent,
|
|
57
71
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
72
|
+
requireAuthorization: plain.require_authorization,
|
|
58
73
|
});
|
|
59
74
|
}
|
|
60
75
|
|
|
@@ -79,6 +94,7 @@ class Meeting {
|
|
|
79
94
|
extension,
|
|
80
95
|
persistent,
|
|
81
96
|
creationTime,
|
|
97
|
+
requireAuthorization,
|
|
82
98
|
} = {}) {
|
|
83
99
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
84
100
|
this.uri = uri;
|
|
@@ -89,6 +105,7 @@ class Meeting {
|
|
|
89
105
|
this.extension = extension;
|
|
90
106
|
this.persistent = persistent;
|
|
91
107
|
this.creationTime = creationTime;
|
|
108
|
+
this.requireAuthorization = requireAuthorization;
|
|
92
109
|
|
|
93
110
|
// Useful to compare instead of instanceof with minified code
|
|
94
111
|
this.type = 'Meeting';
|
|
@@ -99,11 +116,78 @@ class Meeting {
|
|
|
99
116
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
100
117
|
return { username, secret };
|
|
101
118
|
}
|
|
119
|
+
|
|
102
120
|
}
|
|
103
121
|
|
|
104
122
|
//
|
|
105
123
|
|
|
124
|
+
const rawCreationTime = '2021-12-21T15:56:42.880Z';
|
|
125
|
+
|
|
106
126
|
describe('Meeting domain', () => {
|
|
127
|
+
it('should retain its values when parsed', () => {
|
|
128
|
+
const args = {
|
|
129
|
+
guest_sip_authorization: 'some-guest-sip-authorization',
|
|
130
|
+
ingress_http_uri: 'some-uri',
|
|
131
|
+
name: 'some-name',
|
|
132
|
+
owner_uuids: ['some-owner-uuid'],
|
|
133
|
+
port: 'some-port',
|
|
134
|
+
uuid: 'some-uuid',
|
|
135
|
+
exten: 'some-exten',
|
|
136
|
+
persistent: true,
|
|
137
|
+
creation_time: rawCreationTime,
|
|
138
|
+
require_authorization: true,
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const meeting = Meeting.parse(args);
|
|
142
|
+
const {
|
|
143
|
+
uri,
|
|
144
|
+
uuid,
|
|
145
|
+
name,
|
|
146
|
+
port,
|
|
147
|
+
extension,
|
|
148
|
+
persistent,
|
|
149
|
+
ownerUuids,
|
|
150
|
+
creationTime,
|
|
151
|
+
requireAuthorization,
|
|
152
|
+
} = meeting;
|
|
153
|
+
|
|
154
|
+
expect(uri).toEqual(args.ingress_http_uri);
|
|
155
|
+
expect(uuid).toEqual(args.uuid);
|
|
156
|
+
expect(name).toEqual(args.name);
|
|
157
|
+
expect(port).toEqual(args.port);
|
|
158
|
+
expect(extension).toEqual(args.exten);
|
|
159
|
+
expect(persistent).toEqual(args.persistent);
|
|
160
|
+
expect(ownerUuids).toEqual(args.owner_uuids);
|
|
161
|
+
expect(creationTime).toEqual(moment__default['default'](rawCreationTime).toDate());
|
|
162
|
+
expect(requireAuthorization).toEqual(args.require_authorization);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it('should retain its values when instantiated', () => {
|
|
166
|
+
const keys = [
|
|
167
|
+
'uuid',
|
|
168
|
+
'name',
|
|
169
|
+
'guestSipAuthorization',
|
|
170
|
+
'ownerUuids',
|
|
171
|
+
'port',
|
|
172
|
+
'uri',
|
|
173
|
+
'extension',
|
|
174
|
+
'persistent',
|
|
175
|
+
'creationTime',
|
|
176
|
+
'requireAuthorization',
|
|
177
|
+
];
|
|
178
|
+
|
|
179
|
+
const args = keys.reduce((acc, key) => {
|
|
180
|
+
acc[key] = `some-${key}`;
|
|
181
|
+
return acc;
|
|
182
|
+
}, {});
|
|
183
|
+
|
|
184
|
+
const meeting = new Meeting(args);
|
|
185
|
+
|
|
186
|
+
keys.forEach(key =>
|
|
187
|
+
// $FlowFixMe
|
|
188
|
+
expect(meeting[key]).toEqual(`some-${key}`));
|
|
189
|
+
});
|
|
190
|
+
|
|
107
191
|
it('can return username and secret from an base64 encrypted string', () => {
|
|
108
192
|
const USERNAME = 'username';
|
|
109
193
|
const SECRET = 'secret';
|
|
@@ -118,6 +202,7 @@ describe('Meeting domain', () => {
|
|
|
118
202
|
uuid: '',
|
|
119
203
|
exten: '',
|
|
120
204
|
persistent: false,
|
|
205
|
+
require_authorization: false,
|
|
121
206
|
};
|
|
122
207
|
|
|
123
208
|
const meeting = Meeting.parse(args);
|
|
@@ -130,7 +215,7 @@ describe('Meeting domain', () => {
|
|
|
130
215
|
|
|
131
216
|
it('should return a date from a string', () => {
|
|
132
217
|
const args = {
|
|
133
|
-
creation_time:
|
|
218
|
+
creation_time: rawCreationTime,
|
|
134
219
|
guest_sip_authorization: '',
|
|
135
220
|
ingress_http_uri: '',
|
|
136
221
|
name: '',
|
|
@@ -139,6 +224,7 @@ describe('Meeting domain', () => {
|
|
|
139
224
|
uuid: '',
|
|
140
225
|
exten: '',
|
|
141
226
|
persistent: false,
|
|
227
|
+
require_authorization: false,
|
|
142
228
|
};
|
|
143
229
|
|
|
144
230
|
const { creationTime } = Meeting.parse(args);
|