Skip to content

Commit 67bdad7

Browse files
authored
Feat/DEVEXP-470: Voice V1 design (#164)
1 parent 972f108 commit 67bdad7

393 files changed

Lines changed: 25071 additions & 16929 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

client/src/main/com/sinch/sdk/SinchClient.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.sinch.sdk.models.VerificationContext;
1717
import com.sinch.sdk.models.VoiceContext;
1818
import com.sinch.sdk.models.VoiceRegion;
19+
import com.sinch.sdk.models.adapters.DualToneMultiFrequencyMapper;
1920
import java.io.IOException;
2021
import java.io.InputStream;
2122
import java.util.Collection;
@@ -410,4 +411,24 @@ private String formatAuxiliaryFlag() {
410411
}
411412
return String.join(",", values);
412413
}
414+
415+
static {
416+
LocalLazyInit.init();
417+
}
418+
419+
static final class LocalLazyInit {
420+
421+
private LocalLazyInit() {
422+
DualToneMultiFrequencyMapper.initMapper();
423+
}
424+
425+
public static LocalLazyInit init() {
426+
return LocalLazyInit.LazyHolder.INSTANCE;
427+
}
428+
429+
private static class LazyHolder {
430+
431+
public static final LocalLazyInit INSTANCE = new LocalLazyInit();
432+
}
433+
}
413434
}

client/src/main/com/sinch/sdk/domains/voice/ApplicationsService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
import com.sinch.sdk.domains.voice.models.response.AssignedNumbers;
77
import com.sinch.sdk.models.E164PhoneNumber;
88

9-
/** You can use the API to manage features of applications in your project. */
9+
/**
10+
* You can use the API to manage features of applications in your project.
11+
*
12+
* @since 1.0
13+
*/
1014
public interface ApplicationsService {
1115

1216
/**

client/src/main/com/sinch/sdk/domains/voice/VoiceService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@
99
*/
1010
public interface VoiceService {
1111

12+
/**
13+
* Voice Service V1
14+
*
15+
* @return V1 service instance for project
16+
* @see <a href="https://developers.sinch.com/docs/voice">Documentation</a>
17+
* @since 1.1
18+
*/
19+
com.sinch.sdk.domains.voice.api.v1.VoiceService v1();
20+
1221
/**
1322
* Callouts Service instance
1423
*
Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,41 @@
11
package com.sinch.sdk.domains.voice.adapters;
22

3-
import com.sinch.sdk.core.http.AuthManager;
4-
import com.sinch.sdk.core.http.HttpClient;
5-
import com.sinch.sdk.core.http.HttpMapper;
6-
import com.sinch.sdk.domains.voice.adapters.api.v1.ApplicationsApi;
73
import com.sinch.sdk.domains.voice.adapters.converters.ApplicationsDtoConverter;
84
import com.sinch.sdk.domains.voice.models.CallbackUrls;
95
import com.sinch.sdk.domains.voice.models.NumberInformation;
106
import com.sinch.sdk.domains.voice.models.requests.ApplicationsAssignNumbersRequestParameters;
117
import com.sinch.sdk.domains.voice.models.response.AssignedNumbers;
128
import com.sinch.sdk.models.E164PhoneNumber;
13-
import com.sinch.sdk.models.VoiceContext;
14-
import java.util.Map;
159

1610
public class ApplicationsService implements com.sinch.sdk.domains.voice.ApplicationsService {
1711

18-
private final ApplicationsApi api;
12+
private final com.sinch.sdk.domains.voice.api.v1.ApplicationsService v1;
1913

20-
public ApplicationsService(
21-
VoiceContext context, HttpClient httpClient, Map<String, AuthManager> authManagers) {
22-
this.api =
23-
new ApplicationsApi(
24-
httpClient,
25-
context.getVoiceApplicationManagementServer(),
26-
authManagers,
27-
new HttpMapper());
28-
}
29-
30-
protected ApplicationsApi getApi() {
31-
return this.api;
14+
public ApplicationsService(com.sinch.sdk.domains.voice.api.v1.ApplicationsService v1) {
15+
this.v1 = v1;
3216
}
3317

3418
public AssignedNumbers listNumbers() {
35-
36-
return ApplicationsDtoConverter.convert(getApi().configurationGetNumbers());
19+
return ApplicationsDtoConverter.convert(v1.listNumbers());
3720
}
3821

3922
public CallbackUrls getCallbackUrls(String applicationKey) {
40-
41-
return ApplicationsDtoConverter.convert(getApi().configurationGetCallbackURLs(applicationKey));
23+
return ApplicationsDtoConverter.convert(v1.getCallbackUrls(applicationKey));
4224
}
4325

4426
public void updateCallbackUrls(String applicationKey, CallbackUrls parameters) {
45-
getApi()
46-
.configurationUpdateCallbackURLs(
47-
applicationKey, ApplicationsDtoConverter.convert(parameters));
27+
v1.updateCallbackUrls(applicationKey, ApplicationsDtoConverter.convert(parameters));
4828
}
4929

5030
public NumberInformation queryNumber(E164PhoneNumber number) {
51-
return ApplicationsDtoConverter.convert(getApi().callingQueryNumber(number.stringValue()));
31+
return ApplicationsDtoConverter.convert(v1.queryNumber(number.stringValue()));
5232
}
5333

5434
public void assignNumbers(ApplicationsAssignNumbersRequestParameters parameters) {
55-
getApi().configurationUpdateNumbers(ApplicationsDtoConverter.convert(parameters));
35+
v1.assignNumbers(ApplicationsDtoConverter.convert(parameters));
5636
}
5737

5838
public void unassignNumber(E164PhoneNumber phoneNumber, String applicationKey) {
59-
60-
getApi()
61-
.configurationUnassignNumber(ApplicationsDtoConverter.convert(phoneNumber, applicationKey));
39+
v1.unassignNumber(ApplicationsDtoConverter.convert(phoneNumber, applicationKey));
6240
}
6341
}
Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,39 @@
11
package com.sinch.sdk.domains.voice.adapters;
22

3-
import com.sinch.sdk.core.http.AuthManager;
4-
import com.sinch.sdk.core.http.HttpClient;
5-
import com.sinch.sdk.core.http.HttpMapper;
6-
import com.sinch.sdk.domains.voice.adapters.api.v1.CalloutsApi;
73
import com.sinch.sdk.domains.voice.adapters.converters.CalloutsDtoConverter;
84
import com.sinch.sdk.domains.voice.models.requests.CalloutRequestParameters;
95
import com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersConference;
106
import com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersCustom;
117
import com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersTTS;
12-
import com.sinch.sdk.models.VoiceContext;
13-
import java.util.Map;
8+
import com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestConference;
9+
import com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestCustom;
10+
import com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestTTS;
1411

1512
public class CalloutsService implements com.sinch.sdk.domains.voice.CalloutsService {
1613

17-
private final CalloutsApi api;
14+
private final com.sinch.sdk.domains.voice.api.v1.CalloutsService v1;
1815

19-
public CalloutsService(
20-
VoiceContext context, HttpClient httpClient, Map<String, AuthManager> authManagers) {
21-
this.api =
22-
new CalloutsApi(httpClient, context.getVoiceServer(), authManagers, new HttpMapper());
23-
}
24-
25-
protected CalloutsApi getApi() {
26-
return this.api;
16+
public CalloutsService(com.sinch.sdk.domains.voice.api.v1.CalloutsService v1) {
17+
this.v1 = v1;
2718
}
2819

2920
public String textToSpeech(CalloutRequestParametersTTS parameters) {
3021

31-
return call(parameters);
22+
return v1.textToSpeech((CalloutRequestTTS) CalloutsDtoConverter.convert(parameters));
3223
}
3324

3425
public String conference(CalloutRequestParametersConference parameters) {
3526

36-
return call(parameters);
27+
return v1.conference((CalloutRequestConference) CalloutsDtoConverter.convert(parameters));
3728
}
3829

3930
public String custom(CalloutRequestParametersCustom parameters) {
4031

41-
return call(parameters);
32+
return v1.custom((CalloutRequestCustom) CalloutsDtoConverter.convert(parameters));
4233
}
4334

4435
public String call(CalloutRequestParameters parameters) {
4536

46-
return CalloutsDtoConverter.convert(
47-
getApi().callouts(CalloutsDtoConverter.convert(parameters)));
37+
return v1.call(CalloutsDtoConverter.convert(parameters));
4838
}
4939
}
Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,30 @@
11
package com.sinch.sdk.domains.voice.adapters;
22

3-
import com.sinch.sdk.core.http.AuthManager;
4-
import com.sinch.sdk.core.http.HttpClient;
5-
import com.sinch.sdk.core.http.HttpMapper;
6-
import com.sinch.sdk.domains.voice.adapters.api.v1.CallsApi;
73
import com.sinch.sdk.domains.voice.adapters.converters.CallsDtoConverter;
4+
import com.sinch.sdk.domains.voice.adapters.converters.ControlDtoConverter;
85
import com.sinch.sdk.domains.voice.models.CallLegType;
96
import com.sinch.sdk.domains.voice.models.response.CallInformation;
107
import com.sinch.sdk.domains.voice.models.svaml.SVAMLControl;
11-
import com.sinch.sdk.models.VoiceContext;
12-
import java.util.Map;
8+
import com.sinch.sdk.domains.voice.models.v1.calls.request.CallLeg;
139

1410
public class CallsService implements com.sinch.sdk.domains.voice.CallsService {
1511

16-
private final CallsApi api;
12+
private final com.sinch.sdk.domains.voice.api.v1.CallsService v1;
1713

18-
public CallsService(
19-
VoiceContext context, HttpClient httpClient, Map<String, AuthManager> authManagers) {
20-
this.api = new CallsApi(httpClient, context.getVoiceServer(), authManagers, new HttpMapper());
21-
}
22-
23-
protected CallsApi getApi() {
24-
return this.api;
14+
public CallsService(com.sinch.sdk.domains.voice.api.v1.CallsService v1) {
15+
this.v1 = v1;
2516
}
2617

2718
public CallInformation get(String callId) {
28-
29-
return CallsDtoConverter.convert(getApi().callingGetCallResult(callId));
19+
return CallsDtoConverter.convert(v1.get(callId));
3020
}
3121

3222
public void update(String callId, SVAMLControl parameters) {
33-
getApi().callingUpdateCall(callId, CallsDtoConverter.convert(parameters));
23+
v1.update(callId, ControlDtoConverter.convertControl(parameters));
3424
}
3525

3626
public void manageWithCallLeg(String callId, CallLegType callLeg, SVAMLControl parameters) {
37-
getApi()
38-
.callingManageCallWithCallLeg(
39-
callId, callLeg.value(), CallsDtoConverter.convert(parameters));
27+
v1.manageWithCallLeg(
28+
callId, CallLeg.from(callLeg.value()), ControlDtoConverter.convertControl(parameters));
4029
}
4130
}
Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,39 @@
11
package com.sinch.sdk.domains.voice.adapters;
22

3-
import com.sinch.sdk.core.http.AuthManager;
4-
import com.sinch.sdk.core.http.HttpClient;
5-
import com.sinch.sdk.core.http.HttpMapper;
6-
import com.sinch.sdk.domains.voice.adapters.api.v1.ConferencesApi;
73
import com.sinch.sdk.domains.voice.adapters.converters.CalloutsDtoConverter;
84
import com.sinch.sdk.domains.voice.adapters.converters.ConferencesDtoConverter;
95
import com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersConference;
106
import com.sinch.sdk.domains.voice.models.requests.ConferenceManageParticipantRequestParameters;
117
import com.sinch.sdk.domains.voice.models.response.ConferenceParticipant;
12-
import com.sinch.sdk.models.VoiceContext;
8+
import com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestConference;
139
import java.util.Collection;
14-
import java.util.Map;
1510

1611
public class ConferencesService implements com.sinch.sdk.domains.voice.ConferencesService {
1712

18-
private final ConferencesApi api;
13+
private final com.sinch.sdk.domains.voice.api.v1.ConferencesService v1;
1914

20-
public ConferencesService(
21-
VoiceContext context, HttpClient httpClient, Map<String, AuthManager> authManagers) {
22-
this.api =
23-
new ConferencesApi(httpClient, context.getVoiceServer(), authManagers, new HttpMapper());
24-
}
25-
26-
protected ConferencesApi getApi() {
27-
return this.api;
15+
public ConferencesService(com.sinch.sdk.domains.voice.api.v1.ConferencesService v1) {
16+
this.v1 = v1;
2817
}
2918

3019
public String call(CalloutRequestParametersConference parameters) {
31-
return CalloutsDtoConverter.convert(
32-
getApi().callouts(CalloutsDtoConverter.convert(parameters)));
20+
return v1.call((CalloutRequestConference) CalloutsDtoConverter.convert(parameters));
3321
}
3422

3523
public Collection<ConferenceParticipant> get(String conferenceId) {
36-
return ConferencesDtoConverter.convert(getApi().callingGetConferenceInfo(conferenceId));
24+
return ConferencesDtoConverter.convert(v1.get(conferenceId));
3725
}
3826

3927
public void kickAll(String conferenceId) {
40-
getApi().callingKickConferenceAll(conferenceId);
28+
v1.kickAll(conferenceId);
4129
}
4230

4331
public void kickParticipant(String conferenceId, String callId) {
44-
getApi().callingKickConferenceParticipant(callId, conferenceId);
32+
v1.kickParticipant(conferenceId, callId);
4533
}
4634

4735
public void manageParticipant(
4836
String conferenceId, String callId, ConferenceManageParticipantRequestParameters parameters) {
49-
getApi()
50-
.callingManageConferenceParticipant(
51-
callId, conferenceId, ConferencesDtoConverter.convert(parameters));
37+
v1.manageParticipant(conferenceId, callId, ConferencesDtoConverter.convert(parameters));
5238
}
5339
}

client/src/main/com/sinch/sdk/domains/voice/adapters/VoiceService.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public class VoiceService implements com.sinch.sdk.domains.voice.VoiceService {
3636
private Map<String, AuthManager> clientAuthManagers;
3737
private Map<String, AuthManager> webhooksAuthManagers;
3838

39+
private final com.sinch.sdk.domains.voice.api.v1.VoiceService v1;
40+
3941
public VoiceService(
4042
ApplicationCredentials credentials, VoiceContext context, HttpClient httpClient) {
4143

@@ -52,6 +54,10 @@ public VoiceService(
5254
this.context = context;
5355
this.httpClient = httpClient;
5456
setApplicationCredentials(credentials);
57+
58+
this.v1 =
59+
new com.sinch.sdk.domains.voice.api.v1.adapters.VoiceService(
60+
credentials, context, httpClient);
5561
}
5662

5763
private void setApplicationCredentials(ApplicationCredentials credentials) {
@@ -75,9 +81,7 @@ private void setApplicationCredentials(ApplicationCredentials credentials) {
7581
public CalloutsService callouts() {
7682
if (null == this.callouts) {
7783
checkCredentials();
78-
this.callouts =
79-
new com.sinch.sdk.domains.voice.adapters.CalloutsService(
80-
context, httpClient, clientAuthManagers);
84+
this.callouts = new com.sinch.sdk.domains.voice.adapters.CalloutsService(v1().callouts());
8185
}
8286
return this.callouts;
8387
}
@@ -86,18 +90,15 @@ public ConferencesService conferences() {
8690
if (null == this.conferences) {
8791
checkCredentials();
8892
this.conferences =
89-
new com.sinch.sdk.domains.voice.adapters.ConferencesService(
90-
context, httpClient, clientAuthManagers);
93+
new com.sinch.sdk.domains.voice.adapters.ConferencesService(v1.conferences());
9194
}
9295
return this.conferences;
9396
}
9497

9598
public CallsService calls() {
9699
if (null == this.calls) {
97100
checkCredentials();
98-
this.calls =
99-
new com.sinch.sdk.domains.voice.adapters.CallsService(
100-
context, httpClient, clientAuthManagers);
101+
this.calls = new com.sinch.sdk.domains.voice.adapters.CallsService(v1.calls());
101102
}
102103
return this.calls;
103104
}
@@ -106,21 +107,23 @@ public ApplicationsService applications() {
106107
if (null == this.applications) {
107108
checkCredentials();
108109
this.applications =
109-
new com.sinch.sdk.domains.voice.adapters.ApplicationsService(
110-
context, httpClient, clientAuthManagers);
110+
new com.sinch.sdk.domains.voice.adapters.ApplicationsService(v1.applications());
111111
}
112112
return this.applications;
113113
}
114114

115115
public WebHooksService webhooks() {
116116
checkCredentials();
117117
if (null == this.webhooks) {
118-
this.webhooks =
119-
new com.sinch.sdk.domains.voice.adapters.WebHooksService(webhooksAuthManagers);
118+
this.webhooks = new com.sinch.sdk.domains.voice.adapters.WebHooksService(v1.webhooks());
120119
}
121120
return this.webhooks;
122121
}
123122

123+
public com.sinch.sdk.domains.voice.api.v1.VoiceService v1() {
124+
return this.v1;
125+
}
126+
124127
private void checkCredentials() throws ApiAuthException {
125128
if (null == clientAuthManagers || clientAuthManagers.isEmpty()) {
126129
throw new ApiAuthException(

0 commit comments

Comments
 (0)