Skip to content

Commit ccf7751

Browse files
[Azure.Communication.CallAutomation] Fix URI required (Azure#30665)
* [Azure.Communication.CallAutomation] Fix URI required * Update URI to string * Remove imports
1 parent ec3738f commit ccf7751

File tree

6 files changed

+24
-26
lines changed

6 files changed

+24
-26
lines changed

sdk/communication/azure-communication-callingserver/src/main/java/com/azure/communication/callingserver/CallRecordingAsync.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
import java.io.IOException;
4343
import java.io.OutputStream;
4444
import java.net.MalformedURLException;
45+
import java.net.URI;
46+
import java.net.URISyntaxException;
4547
import java.net.URL;
4648
import java.nio.ByteBuffer;
4749
import java.nio.channels.AsynchronousFileChannel;
@@ -112,7 +114,8 @@ public Mono<Response<RecordingStateResult>> startRecordingWithResponse(StartReco
112114

113115
Mono<Response<RecordingStateResult>> startRecordingWithResponseInternal(StartRecordingOptions options, Context context) {
114116
try {
115-
if (!Boolean.TRUE.equals(options.getRecordingStateCallbackUri().isAbsolute())) {
117+
String callbackUrl = options.getRecordingStateCallbackUrl();
118+
if (callbackUrl != null && !callbackUrl.isEmpty() && !Boolean.TRUE.equals(new URI(callbackUrl).isAbsolute())) {
116119
throw logger.logExceptionAsError(new InvalidParameterException("'recordingStateCallbackUri' has to be an absolute Uri"));
117120
}
118121
StartCallRecordingRequestInternal request = getStartCallRecordingRequest(options);
@@ -128,6 +131,8 @@ Mono<Response<RecordingStateResult>> startRecordingWithResponseInternal(StartRec
128131
});
129132
} catch (RuntimeException ex) {
130133
return monoError(logger, ex);
134+
} catch (URISyntaxException ex) {
135+
return monoError(logger, new RuntimeException(ex));
131136
}
132137
}
133138

@@ -156,8 +161,8 @@ private StartCallRecordingRequestInternal getStartCallRecordingRequest(StartReco
156161
if (options.getRecordingChannel() != null) {
157162
request.setRecordingChannelType(RecordingChannelInternal.fromString(options.getRecordingChannel().toString()));
158163
}
159-
if (options.getRecordingStateCallbackUri() != null) {
160-
request.setRecordingStateCallbackUri(options.getRecordingStateCallbackUri().toString());
164+
if (options.getRecordingStateCallbackUrl() != null) {
165+
request.setRecordingStateCallbackUri(options.getRecordingStateCallbackUrl());
161166
}
162167
if (options.getChannelAffinity() != null) {
163168
List<ChannelAffinityInternal> channelAffinityInternal = options.getChannelAffinity()

sdk/communication/azure-communication-callingserver/src/main/java/com/azure/communication/callingserver/models/StartRecordingOptions.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import com.azure.core.annotation.Fluent;
77

8-
import java.net.URI;
98
import java.util.List;
109
import java.util.Objects;
1110

@@ -19,7 +18,7 @@ public class StartRecordingOptions {
1918
*/
2019
private final CallLocator callLocator;
2120

22-
private URI recordingStateCallbackUri;
21+
private String recordingStateCallbackUrl;
2322

2423
private RecordingChannel recordingChannel;
2524

@@ -52,20 +51,20 @@ public CallLocator getCallLocator() {
5251
/**
5352
* Uri to send state change callbacks.
5453
*
55-
* @return {@link URI} to send state change callbacks.
54+
* @return url to send state change callbacks.
5655
*/
57-
public URI getRecordingStateCallbackUri() {
58-
return recordingStateCallbackUri;
56+
public String getRecordingStateCallbackUrl() {
57+
return recordingStateCallbackUrl;
5958
}
6059

6160
/**
62-
* Set the recordingStateCallbackUri
61+
* Set the recordingStateCallbackUrl
6362
*
64-
* @param recordingStateCallbackUri a {@link URI} to send state change callbacks.
63+
* @param recordingStateCallbackUrl to send state change callbacks.
6564
* @return the {@link StartRecordingOptions}
6665
*/
67-
public StartRecordingOptions setRecordingStateCallbackUri(URI recordingStateCallbackUri) {
68-
this.recordingStateCallbackUri = recordingStateCallbackUri;
66+
public StartRecordingOptions setRecordingStateCallbackUrl(String recordingStateCallbackUrl) {
67+
this.recordingStateCallbackUrl = recordingStateCallbackUrl;
6968
return this;
7069
}
7170

sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallRecordingAsyncLiveTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import org.junit.jupiter.params.ParameterizedTest;
1414
import org.junit.jupiter.params.provider.MethodSource;
1515

16-
import java.net.URI;
17-
1816
import static org.junit.jupiter.api.Assertions.assertEquals;
1917
import static org.junit.jupiter.api.Assertions.assertNotNull;
2018
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -39,7 +37,7 @@ public void recordingOperations(HttpClient httpClient) {
3937
CallRecordingAsync callRecording = client.getCallRecordingAsync();
4038
RecordingStateResult recordingResponse = callRecording.startRecording(
4139
new StartRecordingOptions(new ServerCallLocator(serverCallId))
42-
.setRecordingStateCallbackUri(new URI(ngrok)))
40+
.setRecordingStateCallbackUrl(ngrok))
4341
.block();
4442
assertNotNull(recordingResponse);
4543
String recordingId = recordingResponse.getRecordingId();

sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallRecordingAsyncUnitTests.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.reactivestreams.Publisher;
1919
import reactor.test.StepVerifier;
2020

21-
import java.net.URI;
2221
import java.security.InvalidParameterException;
2322
import java.util.ArrayList;
2423
import java.util.Arrays;
@@ -38,7 +37,7 @@ public void setup() {
3837
public void startRecordingRelativeUriFails() {
3938
validateError(InvalidParameterException.class,
4039
callRecording.startRecording(new StartRecordingOptions(new ServerCallLocator(SERVER_CALL_ID))
41-
.setRecordingStateCallbackUri(URI.create("/not/absolute/uri"))
40+
.setRecordingStateCallbackUrl("/not/absolute/uri")
4241
));
4342
}
4443

@@ -48,7 +47,7 @@ public void startRecordingWithFullParamsFails() {
4847
.setRecordingContent(RecordingContent.AUDIO_VIDEO)
4948
.setRecordingChannel(RecordingChannel.MIXED)
5049
.setRecordingFormat(RecordingFormat.MP4)
51-
.setRecordingStateCallbackUri(URI.create("/not/absolute/uri"))
50+
.setRecordingStateCallbackUrl("/not/absolute/uri")
5251
.setChannelAffinity(new ArrayList<ChannelAffinity>(Arrays.asList(
5352
new ChannelAffinity(0, new CommunicationUserIdentifier("rawId1")),
5453
new ChannelAffinity(1, new CommunicationUserIdentifier("rawId2")))));
@@ -65,7 +64,7 @@ public void recordingOperationsTest() {
6564

6665
validateRecordingState(
6766
callRecording.startRecording(new StartRecordingOptions(new ServerCallLocator(SERVER_CALL_ID))
68-
.setRecordingStateCallbackUri(URI.create("https://localhost/"))),
67+
.setRecordingStateCallbackUrl("https://localhost/")),
6968
RecordingState.ACTIVE
7069
);
7170

sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallRecordingLiveTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import org.junit.jupiter.params.ParameterizedTest;
1414
import org.junit.jupiter.params.provider.MethodSource;
1515

16-
import java.net.URI;
17-
1816
import static org.junit.jupiter.api.Assertions.assertEquals;
1917
import static org.junit.jupiter.api.Assertions.assertNotNull;
2018
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -39,7 +37,7 @@ public void recordingOperations(HttpClient httpClient) {
3937
CallRecording callRecording = client.getCallRecording();
4038
RecordingStateResult recordingResponse = callRecording.startRecording(
4139
new StartRecordingOptions(new ServerCallLocator(serverCallId))
42-
.setRecordingStateCallbackUri(new URI(ngrok)));
40+
.setRecordingStateCallbackUrl(ngrok));
4341
assertNotNull(recordingResponse);
4442
String recordingId = recordingResponse.getRecordingId();
4543
assertNotNull(recordingId);

sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallRecordingUnitTests.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import org.junit.jupiter.api.BeforeEach;
1818
import org.junit.jupiter.api.Test;
1919

20-
import java.net.URI;
2120
import java.security.InvalidParameterException;
2221
import java.util.ArrayList;
2322
import java.util.Arrays;
@@ -38,7 +37,7 @@ public void startRecordingRelativeUriFails() {
3837
assertThrows(
3938
InvalidParameterException.class,
4039
() -> callRecording.startRecording(new StartRecordingOptions(new ServerCallLocator(SERVER_CALL_ID))
41-
.setRecordingStateCallbackUri(URI.create("/not/absolute/uri"))
40+
.setRecordingStateCallbackUrl("/not/absolute/uri")
4241
));
4342
}
4443

@@ -48,7 +47,7 @@ public void startRecordingWithFullParamsFails() {
4847
.setRecordingContent(RecordingContent.AUDIO_VIDEO)
4948
.setRecordingChannel(RecordingChannel.MIXED)
5049
.setRecordingFormat(RecordingFormat.MP4)
51-
.setRecordingStateCallbackUri(URI.create("/not/absolute/uri"))
50+
.setRecordingStateCallbackUrl("/not/absolute/uri")
5251
.setChannelAffinity(new ArrayList<ChannelAffinity>(Arrays.asList(
5352
new ChannelAffinity(0, new CommunicationUserIdentifier("rawId1")),
5453
new ChannelAffinity(1, new CommunicationUserIdentifier("rawId2")))));
@@ -69,7 +68,7 @@ public void recordingOperationsTest() {
6968

7069
validateRecording(
7170
callRecording.startRecording(new StartRecordingOptions(new ServerCallLocator(SERVER_CALL_ID))
72-
.setRecordingStateCallbackUri(URI.create("https://localhost/"))),
71+
.setRecordingStateCallbackUrl("https://localhost/")),
7372
RecordingState.ACTIVE
7473
);
7574

0 commit comments

Comments
 (0)