@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.
- package/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +142 -2
- package/esm/__tests__/web-rtc-client.test.js +249 -28
- package/esm/api/calld.js +8 -0
- package/esm/api/confd.js +134 -2
- package/esm/api-client.js +142 -2
- package/esm/checker/Checker.js +205 -25
- package/esm/checker/checks/aor.js +142 -2
- package/esm/checker/checks/api.js +142 -2
- package/esm/checker/checks/index.js +205 -25
- package/esm/checker/checks/wazo-websocket.js +2 -0
- package/esm/checker/checks/webrtc-transport.js +203 -25
- package/esm/checker/checks/webrtc.js +203 -25
- package/esm/domain/AdHocAPIConference.js +142 -2
- package/esm/domain/Features.js +142 -2
- package/esm/domain/Meeting.js +18 -0
- package/esm/domain/MeetingAuthorization.js +70 -0
- package/esm/domain/Phone/CTIPhone.js +142 -2
- package/esm/domain/Phone/WebRTCPhone.js +1 -3
- package/esm/domain/__tests__/Meeting.test.js +87 -1
- package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
- package/esm/index.js +249 -31
- package/esm/lib/WazoSessionDescriptionHandler.js +22 -1
- package/esm/service/CallApi.js +142 -2
- package/esm/service/getApiClient.js +142 -2
- package/esm/simple/Auth.js +249 -31
- package/esm/simple/Configuration.js +249 -31
- package/esm/simple/Directory.js +142 -2
- package/esm/simple/Phone.js +249 -31
- package/esm/simple/Websocket.js +3 -0
- package/esm/simple/index.js +249 -31
- package/esm/simple/room/LocalParticipant.js +249 -31
- package/esm/simple/room/Participant.js +249 -31
- package/esm/simple/room/RemoteParticipant.js +249 -31
- package/esm/simple/room/Room.js +249 -31
- package/esm/simple/room/SipRoom.js +249 -31
- package/esm/simple/room/Stream.js +249 -31
- package/esm/simple/room/__tests__/Participant.test.js +14745 -0
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +249 -31
- package/esm/simple/utils.js +249 -31
- package/esm/utils/__tests__/object.test.js +57 -0
- package/esm/utils/__tests__/sdp.test.js +50 -0
- package/esm/utils/__tests__/string.test.js +30 -0
- package/esm/utils/object.js +24 -0
- package/esm/utils/sdp.js +19 -1
- package/esm/utils/string.js +10 -0
- package/esm/web-rtc-client.js +203 -25
- package/esm/websocket-client.js +3 -1
- package/lib/__tests__/api-client.test.js +142 -2
- package/lib/__tests__/web-rtc-client.test.js +249 -28
- package/lib/api/calld.js +8 -0
- package/lib/api/confd.js +134 -2
- package/lib/api-client.js +142 -2
- package/lib/checker/Checker.js +205 -25
- package/lib/checker/checks/aor.js +142 -2
- package/lib/checker/checks/api.js +142 -2
- package/lib/checker/checks/index.js +205 -25
- package/lib/checker/checks/wazo-websocket.js +2 -0
- package/lib/checker/checks/webrtc-transport.js +203 -25
- package/lib/checker/checks/webrtc.js +203 -25
- package/lib/domain/AdHocAPIConference.js +142 -2
- package/lib/domain/Features.js +142 -2
- package/lib/domain/Meeting.js +18 -0
- package/lib/domain/MeetingAuthorization.js +79 -0
- package/lib/domain/Phone/CTIPhone.js +142 -2
- package/lib/domain/Phone/WebRTCPhone.js +1 -3
- package/lib/domain/__tests__/Meeting.test.js +87 -1
- package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
- package/lib/index.js +249 -31
- package/lib/lib/WazoSessionDescriptionHandler.js +22 -1
- package/lib/service/CallApi.js +142 -2
- package/lib/service/getApiClient.js +142 -2
- package/lib/simple/Auth.js +249 -31
- package/lib/simple/Configuration.js +249 -31
- package/lib/simple/Directory.js +142 -2
- package/lib/simple/Phone.js +249 -31
- package/lib/simple/Websocket.js +3 -0
- package/lib/simple/index.js +249 -31
- package/lib/simple/room/LocalParticipant.js +249 -31
- package/lib/simple/room/Participant.js +249 -31
- package/lib/simple/room/RemoteParticipant.js +249 -31
- package/lib/simple/room/Room.js +249 -31
- package/lib/simple/room/SipRoom.js +249 -31
- package/lib/simple/room/Stream.js +249 -31
- package/lib/simple/room/__tests__/Participant.test.js +14755 -0
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +249 -31
- package/lib/simple/utils.js +249 -31
- package/lib/utils/__tests__/object.test.js +59 -0
- package/lib/utils/__tests__/sdp.test.js +50 -0
- package/lib/utils/__tests__/string.test.js +32 -0
- package/lib/utils/object.js +28 -0
- package/lib/utils/sdp.js +19 -0
- package/lib/utils/string.js +14 -0
- package/lib/web-rtc-client.js +203 -25
- package/lib/websocket-client.js +3 -0
- package/package.json +2 -2
- package/src/__tests__/web-rtc-client.test.js +46 -3
- package/src/api/calld.js +8 -0
- package/src/api/confd.js +43 -2
- 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/lib/WazoSessionDescriptionHandler.js +5 -2
- 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__/sdp.test.js +33 -1
- package/src/utils/__tests__/string.test.js +23 -0
- package/src/utils/object.js +15 -0
- package/src/utils/sdp.js +18 -0
- package/src/utils/string.js +8 -0
- package/src/web-rtc-client.js +39 -22
- package/src/websocket-client.js +2 -0
|
@@ -3600,6 +3600,70 @@ class ExternalApp {
|
|
|
3600
3600
|
|
|
3601
3601
|
//
|
|
3602
3602
|
|
|
3603
|
+
class MeetingAuthorization {
|
|
3604
|
+
|
|
3605
|
+
|
|
3606
|
+
|
|
3607
|
+
|
|
3608
|
+
|
|
3609
|
+
|
|
3610
|
+
constructor({
|
|
3611
|
+
meetingUuid,
|
|
3612
|
+
uuid,
|
|
3613
|
+
userUuid,
|
|
3614
|
+
userName,
|
|
3615
|
+
} = {}) {
|
|
3616
|
+
this.meetingUuid = meetingUuid;
|
|
3617
|
+
this.uuid = uuid;
|
|
3618
|
+
this.userUuid = userUuid;
|
|
3619
|
+
this.userName = userName;
|
|
3620
|
+
}
|
|
3621
|
+
|
|
3622
|
+
setStatus(status ) {
|
|
3623
|
+
this.status = status;
|
|
3624
|
+
}
|
|
3625
|
+
|
|
3626
|
+
getStatus() {
|
|
3627
|
+
return this.status;
|
|
3628
|
+
}
|
|
3629
|
+
|
|
3630
|
+
static parse(plain ) {
|
|
3631
|
+
const {
|
|
3632
|
+
meeting_uuid: meetingUuid,
|
|
3633
|
+
uuid,
|
|
3634
|
+
guest_uuid: userUuid,
|
|
3635
|
+
guest_name: userName,
|
|
3636
|
+
} = plain;
|
|
3637
|
+
|
|
3638
|
+
return new MeetingAuthorization({
|
|
3639
|
+
meetingUuid,
|
|
3640
|
+
uuid,
|
|
3641
|
+
userUuid,
|
|
3642
|
+
userName,
|
|
3643
|
+
});
|
|
3644
|
+
}
|
|
3645
|
+
|
|
3646
|
+
static parseMany(items ) {
|
|
3647
|
+
if (!items) {
|
|
3648
|
+
return [];
|
|
3649
|
+
}
|
|
3650
|
+
return items.map(MeetingAuthorization.parse);
|
|
3651
|
+
}
|
|
3652
|
+
}
|
|
3653
|
+
|
|
3654
|
+
//
|
|
3655
|
+
|
|
3656
|
+
|
|
3657
|
+
|
|
3658
|
+
|
|
3659
|
+
|
|
3660
|
+
|
|
3661
|
+
|
|
3662
|
+
|
|
3663
|
+
|
|
3664
|
+
|
|
3665
|
+
|
|
3666
|
+
|
|
3603
3667
|
|
|
3604
3668
|
|
|
3605
3669
|
|
|
@@ -3610,6 +3674,7 @@ class ExternalApp {
|
|
|
3610
3674
|
|
|
3611
3675
|
|
|
3612
3676
|
|
|
3677
|
+
|
|
3613
3678
|
|
|
3614
3679
|
|
|
3615
3680
|
class Meeting {
|
|
@@ -3624,6 +3689,8 @@ class Meeting {
|
|
|
3624
3689
|
|
|
3625
3690
|
|
|
3626
3691
|
|
|
3692
|
+
|
|
3693
|
+
|
|
3627
3694
|
|
|
3628
3695
|
static parse(plain ) {
|
|
3629
3696
|
return new Meeting({
|
|
@@ -3636,6 +3703,7 @@ class Meeting {
|
|
|
3636
3703
|
extension: plain.exten,
|
|
3637
3704
|
persistent: plain.persistent,
|
|
3638
3705
|
creationTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3706
|
+
requireAuthorization: plain.require_authorization,
|
|
3639
3707
|
});
|
|
3640
3708
|
}
|
|
3641
3709
|
|
|
@@ -3660,6 +3728,7 @@ class Meeting {
|
|
|
3660
3728
|
extension,
|
|
3661
3729
|
persistent,
|
|
3662
3730
|
creationTime,
|
|
3731
|
+
requireAuthorization,
|
|
3663
3732
|
} = {}) {
|
|
3664
3733
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3665
3734
|
this.uri = uri;
|
|
@@ -3670,6 +3739,7 @@ class Meeting {
|
|
|
3670
3739
|
this.extension = extension;
|
|
3671
3740
|
this.persistent = persistent;
|
|
3672
3741
|
this.creationTime = creationTime;
|
|
3742
|
+
this.requireAuthorization = requireAuthorization;
|
|
3673
3743
|
|
|
3674
3744
|
// Useful to compare instead of instanceof with minified code
|
|
3675
3745
|
this.type = 'Meeting';
|
|
@@ -3680,8 +3750,32 @@ class Meeting {
|
|
|
3680
3750
|
const [username, secret] = atob(this.guestSipAuthorization).split(':');
|
|
3681
3751
|
return { username, secret };
|
|
3682
3752
|
}
|
|
3753
|
+
|
|
3683
3754
|
}
|
|
3684
3755
|
|
|
3756
|
+
//
|
|
3757
|
+
|
|
3758
|
+
const camelToUnderscore = (key ) => {
|
|
3759
|
+
if (typeof key !== 'string') {
|
|
3760
|
+
throw new Error('Input is not a string');
|
|
3761
|
+
}
|
|
3762
|
+
return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
3763
|
+
};
|
|
3764
|
+
|
|
3765
|
+
//
|
|
3766
|
+
|
|
3767
|
+
const convertKeysFromCamelToUnderscore = (args ) => {
|
|
3768
|
+
if (!args || typeof args !== 'object' || Array.isArray(args)) {
|
|
3769
|
+
throw new Error('Input is not an object');
|
|
3770
|
+
}
|
|
3771
|
+
|
|
3772
|
+
return Object.keys(args).reduce((acc, key) => {
|
|
3773
|
+
acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
|
|
3774
|
+
? convertKeysFromCamelToUnderscore(args[key]) : args[key];
|
|
3775
|
+
return acc;
|
|
3776
|
+
}, {});
|
|
3777
|
+
};
|
|
3778
|
+
|
|
3685
3779
|
/* */
|
|
3686
3780
|
|
|
3687
3781
|
var confdMethods = (client , baseUrl ) => ({
|
|
@@ -3750,8 +3844,18 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3750
3844
|
getMyMeetings: () =>
|
|
3751
3845
|
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3752
3846
|
|
|
3753
|
-
createMyMeeting: (
|
|
3754
|
-
client
|
|
3847
|
+
createMyMeeting: (args ) =>
|
|
3848
|
+
client
|
|
3849
|
+
.post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
|
|
3850
|
+
.then(Meeting.parse),
|
|
3851
|
+
|
|
3852
|
+
updateMyMeeting: (meetingUuid , data ) =>
|
|
3853
|
+
client.put(
|
|
3854
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}`,
|
|
3855
|
+
convertKeysFromCamelToUnderscore(data),
|
|
3856
|
+
null,
|
|
3857
|
+
ApiRequester.successResponseParser,
|
|
3858
|
+
),
|
|
3755
3859
|
|
|
3756
3860
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3757
3861
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -3759,8 +3863,36 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3759
3863
|
getMeeting: (meetingUuid ) =>
|
|
3760
3864
|
client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3761
3865
|
|
|
3866
|
+
meetingAuthorizations: (meetingUuid ) =>
|
|
3867
|
+
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
|
|
3868
|
+
|
|
3869
|
+
meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
|
|
3870
|
+
client.put(
|
|
3871
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
|
|
3872
|
+
{},
|
|
3873
|
+
null,
|
|
3874
|
+
ApiRequester.successResponseParser,
|
|
3875
|
+
),
|
|
3876
|
+
|
|
3877
|
+
meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
|
|
3878
|
+
client.put(
|
|
3879
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
|
|
3880
|
+
{},
|
|
3881
|
+
null,
|
|
3882
|
+
ApiRequester.successResponseParser,
|
|
3883
|
+
),
|
|
3884
|
+
|
|
3762
3885
|
guestGetMeeting: (meetingUuid ) =>
|
|
3763
3886
|
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
|
|
3887
|
+
|
|
3888
|
+
guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
|
|
3889
|
+
client
|
|
3890
|
+
.post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
|
|
3891
|
+
.then(MeetingAuthorization.parse),
|
|
3892
|
+
|
|
3893
|
+
guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
|
|
3894
|
+
client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
|
|
3895
|
+
|
|
3764
3896
|
});
|
|
3765
3897
|
|
|
3766
3898
|
//
|
|
@@ -4629,6 +4761,14 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4629
4761
|
getMeetingParticipantsAsUser: async (meetingUuid ) =>
|
|
4630
4762
|
client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
|
|
4631
4763
|
|
|
4764
|
+
banMeetingParticipant: (meetingUuid , participantUuid ) =>
|
|
4765
|
+
client.delete(
|
|
4766
|
+
`${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
|
|
4767
|
+
null,
|
|
4768
|
+
null,
|
|
4769
|
+
ApiRequester.successResponseParser,
|
|
4770
|
+
),
|
|
4771
|
+
|
|
4632
4772
|
listTrunks: () => client.get(`${baseUrl}/trunks`),
|
|
4633
4773
|
|
|
4634
4774
|
mute: (callId ) =>
|
|
@@ -1442,9 +1442,7 @@ class WebRTCPhone extends Emitter {
|
|
|
1442
1442
|
|
|
1443
1443
|
try {
|
|
1444
1444
|
if (this.currentScreenShare.stream) {
|
|
1445
|
-
this.currentScreenShare.stream.getTracks()
|
|
1446
|
-
.filter(track => track.kind === 'video')
|
|
1447
|
-
.forEach(track => track.stop());
|
|
1445
|
+
this.currentScreenShare.stream.getTracks().forEach(track => track.stop());
|
|
1448
1446
|
}
|
|
1449
1447
|
|
|
1450
1448
|
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);
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
class MeetingAuthorization {
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
constructor({
|
|
13
|
+
meetingUuid,
|
|
14
|
+
uuid,
|
|
15
|
+
userUuid,
|
|
16
|
+
userName,
|
|
17
|
+
} = {}) {
|
|
18
|
+
this.meetingUuid = meetingUuid;
|
|
19
|
+
this.uuid = uuid;
|
|
20
|
+
this.userUuid = userUuid;
|
|
21
|
+
this.userName = userName;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
setStatus(status ) {
|
|
25
|
+
this.status = status;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getStatus() {
|
|
29
|
+
return this.status;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static parse(plain ) {
|
|
33
|
+
const {
|
|
34
|
+
meeting_uuid: meetingUuid,
|
|
35
|
+
uuid,
|
|
36
|
+
guest_uuid: userUuid,
|
|
37
|
+
guest_name: userName,
|
|
38
|
+
} = plain;
|
|
39
|
+
|
|
40
|
+
return new MeetingAuthorization({
|
|
41
|
+
meetingUuid,
|
|
42
|
+
uuid,
|
|
43
|
+
userUuid,
|
|
44
|
+
userName,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static parseMany(items ) {
|
|
49
|
+
if (!items) {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
return items.map(MeetingAuthorization.parse);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
describe('MeetingAuthorization', () => {
|
|
57
|
+
describe('parse', () => {
|
|
58
|
+
it('should parse a raw input', () => {
|
|
59
|
+
const rawAuthorization = {
|
|
60
|
+
created_at: 'today',
|
|
61
|
+
meeting_uuid: 'meeting_uuid',
|
|
62
|
+
uuid: 'uuid',
|
|
63
|
+
guest_uuid: 'guest_uuid',
|
|
64
|
+
guest_name: 'guest_name',
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const authorization = {
|
|
68
|
+
meetingUuid: rawAuthorization.meeting_uuid,
|
|
69
|
+
uuid: rawAuthorization.uuid,
|
|
70
|
+
userUuid: rawAuthorization.guest_uuid,
|
|
71
|
+
userName: rawAuthorization.guest_name,
|
|
72
|
+
status: undefined,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const response = MeetingAuthorization.parse(rawAuthorization);
|
|
76
|
+
expect(response).toEqual(authorization);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
describe('parseMany', () => {
|
|
81
|
+
it('should parse multiple raw inputs', () => {
|
|
82
|
+
const rawAuthorizations = [
|
|
83
|
+
{
|
|
84
|
+
created_at: 'today1',
|
|
85
|
+
meeting_uuid: 'meeting_uuid1',
|
|
86
|
+
uuid: 'uuid1',
|
|
87
|
+
guest_uuid: 'guest_uuid1',
|
|
88
|
+
guest_name: 'guest_name1',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
created_at: 'today2',
|
|
92
|
+
meeting_uuid: 'meeting_uuid2',
|
|
93
|
+
uuid: 'uuid2',
|
|
94
|
+
guest_uuid: 'guest_uuid2',
|
|
95
|
+
guest_name: 'guest_name2',
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
const authorizations = rawAuthorizations.map(rawAuthorization => ({
|
|
100
|
+
meetingUuid: rawAuthorization.meeting_uuid,
|
|
101
|
+
uuid: rawAuthorization.uuid,
|
|
102
|
+
userUuid: rawAuthorization.guest_uuid,
|
|
103
|
+
userName: rawAuthorization.guest_name,
|
|
104
|
+
status: undefined,
|
|
105
|
+
}));
|
|
106
|
+
|
|
107
|
+
const response = MeetingAuthorization.parseMany(rawAuthorizations);
|
|
108
|
+
expect(response).toEqual(authorizations);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|