Skip to content

Commit 08a5d25

Browse files
Allow setting headers and waitTime seconds (#213)
1 parent db7f7c7 commit 08a5d25

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

src/main/java/io/iworkflow/core/Client.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ public Client(final Registry registry, final ClientOptions clientOptions) {
4848
this.unregisteredClient = new UnregisteredClient(clientOptions);
4949
}
5050

51+
public Client(final Registry registry, final ClientOptions clientOptions, final UnregisteredClient unregisteredClient) {
52+
this.registry = registry;
53+
this.clientOptions = clientOptions;
54+
this.unregisteredClient = unregisteredClient;
55+
}
56+
5157
public UnregisteredClient getUnregisteredClient() {
5258
return unregisteredClient;
5359
}

src/main/java/io/iworkflow/core/ClientOptions.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import org.immutables.value.Value;
44

5+
import java.util.Map;
6+
import java.util.Optional;
7+
58
import static java.util.concurrent.TimeUnit.SECONDS;
69

710
@Value.Immutable
@@ -12,6 +15,10 @@ public abstract class ClientOptions {
1215

1316
public abstract ObjectEncoder getObjectEncoder();
1417

18+
public abstract Optional<Integer> getLongPollApiMaxWaitTimeSeconds();
19+
20+
public abstract Map<String,String> getRequestHeaders();
21+
1522
@Value.Default
1623
public ServiceApiRetryConfig getServiceApiRetryConfig() {
1724
return ImmutableServiceApiRetryConfig.builder()

src/main/java/io/iworkflow/core/UnregisteredClient.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,17 @@ public UnregisteredClient(final ClientOptions clientOptions) {
6060
);
6161
feignBuilder.errorDecoder(new ServerErrorRetryDecoder());
6262
apiClient.setFeignBuilder(feignBuilder);
63+
feignBuilder.requestInterceptor(
64+
(requestTemplate) -> clientOptions.getRequestHeaders().forEach(requestTemplate::header)
65+
);
6366

6467
this.defaultApi = apiClient.buildClient(DefaultApi.class);
6568
}
69+
70+
public UnregisteredClient(final ClientOptions clientOptions, final DefaultApi openApiClient) {
71+
this.clientOptions = clientOptions;
72+
this.defaultApi = openApiClient;
73+
}
6674

6775
/**
6876
* @param workflowType required
@@ -323,6 +331,10 @@ private List<StateCompletionOutput> getWorkflowResults(
323331
.workflowId(workflowId)
324332
.workflowRunId(workflowRunId);
325333

334+
if(withWait && clientOptions.getLongPollApiMaxWaitTimeSeconds().isPresent()) {
335+
request.waitTimeSeconds(clientOptions.getLongPollApiMaxWaitTimeSeconds().get());
336+
}
337+
326338
final WorkflowGetResponse workflowGetResponse;
327339
try {
328340
if (withWait) {
@@ -352,6 +364,11 @@ public <T> T waitForStateExecutionCompletion(
352364
final WorkflowWaitForStateCompletionRequest request = new WorkflowWaitForStateCompletionRequest()
353365
.stateExecutionId(stateExecutionId)
354366
.workflowId(workflowId);
367+
368+
if(clientOptions.getLongPollApiMaxWaitTimeSeconds().isPresent()) {
369+
request.waitTimeSeconds(clientOptions.getLongPollApiMaxWaitTimeSeconds().get());
370+
}
371+
355372
final WorkflowWaitForStateCompletionResponse response;
356373
try {
357374
response = defaultApi.apiV1WorkflowWaitForStateCompletionPost(request);

0 commit comments

Comments
 (0)