Skip to content

Commit 427fe7b

Browse files
authored
Adding repeatable headers to start recording (Azure#31701)
1 parent c952eba commit 427fe7b

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.azure.communication.callautomation.models.GroupCallLocator;
2323
import com.azure.communication.callautomation.models.ParallelDownloadOptions;
2424
import com.azure.communication.callautomation.models.RecordingStateResult;
25+
import com.azure.communication.callautomation.models.RepeatabilityHeaders;
2526
import com.azure.communication.callautomation.models.ServerCallLocator;
2627
import com.azure.communication.callautomation.models.StartRecordingOptions;
2728
import com.azure.core.annotation.ReturnType;
@@ -51,10 +52,12 @@
5152
import java.nio.file.Path;
5253
import java.nio.file.StandardOpenOption;
5354
import java.security.InvalidParameterException;
55+
import java.time.Instant;
5456
import java.util.HashSet;
5557
import java.util.List;
5658
import java.util.Objects;
5759
import java.util.Set;
60+
import java.util.UUID;
5861
import java.util.stream.Collectors;
5962

6063
import static com.azure.core.util.FluxUtil.monoError;
@@ -120,10 +123,19 @@ Mono<Response<RecordingStateResult>> startRecordingWithResponseInternal(StartRec
120123
}
121124
StartCallRecordingRequestInternal request = getStartCallRecordingRequest(options);
122125

126+
if (options.getRepeatabilityHeaders() == null) {
127+
RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now());
128+
options.setRepeatabilityHeaders(autoRepeatabilityHeaders);
129+
}
130+
123131
return withContext(contextValue -> {
124132
contextValue = context == null ? contextValue : context;
125133
return contentsInternal
126-
.recordingWithResponseAsync(request, null, null, contextValue)
134+
.recordingWithResponseAsync(
135+
request,
136+
options.getRepeatabilityHeaders().getRepeatabilityRequestId(),
137+
options.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(),
138+
contextValue)
127139
.onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create)
128140
.map(response ->
129141
new SimpleResponse<>(response, RecordingStateResponseConstructorProxy.create(response.getValue()))

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public class StartRecordingOptions {
2929

3030
private List<CommunicationIdentifier> audioChannelParticipantOrdering;
3131

32+
private RepeatabilityHeaders repeatabilityHeaders;
33+
3234
/**
3335
* Constructor
3436
*
@@ -156,4 +158,25 @@ public StartRecordingOptions setAudioChannelParticipantOrdering(List<Communicati
156158
this.audioChannelParticipantOrdering = audioChannelParticipantOrdering;
157159
return this;
158160
}
161+
162+
/**
163+
* Get the Repeatability headers configuration.
164+
*
165+
* @return the repeatabilityHeaders
166+
*/
167+
public RepeatabilityHeaders getRepeatabilityHeaders() {
168+
return repeatabilityHeaders;
169+
}
170+
171+
172+
/**
173+
* Set the repeatability headers
174+
*
175+
* @param repeatabilityHeaders The repeatability headers configuration.
176+
* @return the StartRecordingOptions object itself.
177+
*/
178+
public StartRecordingOptions setRepeatabilityHeaders(RepeatabilityHeaders repeatabilityHeaders) {
179+
this.repeatabilityHeaders = repeatabilityHeaders;
180+
return this;
181+
}
159182
}

0 commit comments

Comments
 (0)