|
19 | 19 |
|
20 | 20 | package org.lowcoder.plugin.restapi;
|
21 | 21 |
|
22 |
| -import com.fasterxml.jackson.core.JsonProcessingException; |
23 |
| -import com.fasterxml.jackson.databind.JsonNode; |
24 |
| -import com.fasterxml.jackson.databind.node.ObjectNode; |
25 |
| -import com.google.common.collect.ImmutableMap; |
26 |
| -import lombok.Builder; |
27 |
| -import lombok.Getter; |
| 22 | +import static com.google.common.base.MoreObjects.firstNonNull; |
| 23 | +import static org.apache.commons.collections4.MapUtils.emptyIfNull; |
| 24 | +import static org.apache.commons.lang3.StringUtils.trimToEmpty; |
| 25 | +import static org.lowcoder.plugin.restapi.RestApiError.REST_API_EXECUTION_ERROR; |
| 26 | +import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.isBinary; |
| 27 | +import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.isJson; |
| 28 | +import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.isJsonContentType; |
| 29 | +import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.isPicture; |
| 30 | +import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.isValidContentType; |
| 31 | +import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.parseContentType; |
| 32 | +import static org.lowcoder.sdk.exception.PluginCommonError.JSON_PARSE_ERROR; |
| 33 | +import static org.lowcoder.sdk.exception.PluginCommonError.QUERY_ARGUMENT_ERROR; |
| 34 | +import static org.lowcoder.sdk.exception.PluginCommonError.QUERY_EXECUTION_ERROR; |
| 35 | +import static org.lowcoder.sdk.plugin.restapi.DataUtils.convertToMultiformFileValue; |
| 36 | +import static org.lowcoder.sdk.plugin.restapi.auth.RestApiAuthType.DIGEST_AUTH; |
| 37 | +import static org.lowcoder.sdk.plugin.restapi.auth.RestApiAuthType.OAUTH2_INHERIT_FROM_LOGIN; |
| 38 | +import static org.lowcoder.sdk.util.ExceptionUtils.propagateError; |
| 39 | +import static org.lowcoder.sdk.util.JsonUtils.readTree; |
| 40 | +import static org.lowcoder.sdk.util.JsonUtils.toJsonThrows; |
| 41 | +import static org.lowcoder.sdk.util.MustacheHelper.renderMustacheJson; |
| 42 | +import static org.lowcoder.sdk.util.MustacheHelper.renderMustacheString; |
| 43 | +import static org.lowcoder.sdk.util.StreamUtils.collectList; |
| 44 | + |
| 45 | +import java.io.IOException; |
| 46 | +import java.net.URI; |
| 47 | +import java.net.URISyntaxException; |
| 48 | +import java.nio.charset.StandardCharsets; |
| 49 | +import java.text.ParseException; |
| 50 | +import java.time.Duration; |
| 51 | +import java.util.ArrayList; |
| 52 | +import java.util.Base64; |
| 53 | +import java.util.HashMap; |
| 54 | +import java.util.HashSet; |
| 55 | +import java.util.List; |
| 56 | +import java.util.Map; |
| 57 | +import java.util.Set; |
| 58 | +import java.util.function.Consumer; |
| 59 | +import java.util.stream.Collectors; |
| 60 | +import java.util.stream.Stream; |
| 61 | + |
| 62 | +import javax.annotation.Nullable; |
| 63 | + |
28 | 64 | import org.apache.commons.collections4.CollectionUtils;
|
29 | 65 | import org.apache.commons.lang3.ObjectUtils;
|
30 | 66 | import org.apache.commons.lang3.StringUtils;
|
|
51 | 87 | import org.lowcoder.sdk.query.QueryVisitorContext;
|
52 | 88 | import org.lowcoder.sdk.webclient.WebClientBuildHelper;
|
53 | 89 | import org.pf4j.Extension;
|
54 |
| -import org.springframework.http.*; |
| 90 | +import org.springframework.http.HttpCookie; |
| 91 | +import org.springframework.http.HttpHeaders; |
| 92 | +import org.springframework.http.HttpMethod; |
| 93 | +import org.springframework.http.HttpStatus; |
| 94 | +import org.springframework.http.MediaType; |
| 95 | +import org.springframework.http.ResponseEntity; |
55 | 96 | import org.springframework.http.client.reactive.ClientHttpRequest;
|
| 97 | +import org.springframework.http.client.reactive.ReactorClientHttpConnector; |
56 | 98 | import org.springframework.util.MultiValueMap;
|
57 | 99 | import org.springframework.web.reactive.function.BodyInserter;
|
58 | 100 | import org.springframework.web.reactive.function.BodyInserters;
|
59 | 101 | import org.springframework.web.reactive.function.client.ExchangeStrategies;
|
60 | 102 | import org.springframework.web.reactive.function.client.WebClient;
|
61 |
| -import reactor.core.publisher.Mono; |
62 | 103 |
|
63 |
| -import javax.annotation.Nullable; |
64 |
| -import java.io.IOException; |
65 |
| -import java.net.URI; |
66 |
| -import java.net.URISyntaxException; |
67 |
| -import java.nio.charset.StandardCharsets; |
68 |
| -import java.text.ParseException; |
69 |
| -import java.util.*; |
70 |
| -import java.util.function.Consumer; |
71 |
| -import java.util.stream.Collectors; |
72 |
| -import java.util.stream.Stream; |
| 104 | +import com.fasterxml.jackson.core.JsonProcessingException; |
| 105 | +import com.fasterxml.jackson.databind.JsonNode; |
| 106 | +import com.fasterxml.jackson.databind.node.ObjectNode; |
| 107 | +import com.google.common.collect.ImmutableMap; |
73 | 108 |
|
74 |
| -import static com.google.common.base.MoreObjects.firstNonNull; |
75 |
| -import static org.apache.commons.collections4.MapUtils.emptyIfNull; |
76 |
| -import static org.apache.commons.lang3.StringUtils.trimToEmpty; |
77 |
| -import static org.lowcoder.plugin.restapi.RestApiError.REST_API_EXECUTION_ERROR; |
78 |
| -import static org.lowcoder.plugin.restapi.helpers.ContentTypeHelper.*; |
79 |
| -import static org.lowcoder.sdk.exception.PluginCommonError.*; |
80 |
| -import static org.lowcoder.sdk.plugin.restapi.DataUtils.convertToMultiformFileValue; |
81 |
| -import static org.lowcoder.sdk.plugin.restapi.auth.RestApiAuthType.DIGEST_AUTH; |
82 |
| -import static org.lowcoder.sdk.plugin.restapi.auth.RestApiAuthType.OAUTH2_INHERIT_FROM_LOGIN; |
83 |
| -import static org.lowcoder.sdk.util.ExceptionUtils.propagateError; |
84 |
| -import static org.lowcoder.sdk.util.JsonUtils.readTree; |
85 |
| -import static org.lowcoder.sdk.util.JsonUtils.toJsonThrows; |
86 |
| -import static org.lowcoder.sdk.util.MustacheHelper.renderMustacheJson; |
87 |
| -import static org.lowcoder.sdk.util.MustacheHelper.renderMustacheString; |
88 |
| -import static org.lowcoder.sdk.util.StreamUtils.collectList; |
| 109 | +import lombok.Builder; |
| 110 | +import lombok.Getter; |
| 111 | +import reactor.core.publisher.Mono; |
| 112 | +import reactor.netty.http.client.HttpClient; |
89 | 113 |
|
90 | 114 | @Extension
|
91 | 115 | public class RestApiExecutor implements QueryExecutor<RestApiDatasourceConfig, Object, RestApiQueryExecutionContext> {
|
@@ -176,6 +200,7 @@ public RestApiQueryExecutionContext buildQueryExecutionContext(RestApiDatasource
|
176 | 200 | .authConfig(datasourceConfig.getAuthConfig())
|
177 | 201 | .sslConfig(datasourceConfig.getSslConfig())
|
178 | 202 | .authTokenMono(queryVisitorContext.getAuthTokenMono())
|
| 203 | + .timeoutMs(queryConfig.getTimeoutMs()) |
179 | 204 | .build();
|
180 | 205 | }
|
181 | 206 |
|
@@ -235,9 +260,13 @@ public Mono<QueryExecutionResult> executeQuery(Object webClientFilter, RestApiQu
|
235 | 260 | webClientBuilder.filter(new BufferingFilter());
|
236 | 261 | }
|
237 | 262 |
|
| 263 | + HttpClient httpClient = HttpClient.create() |
| 264 | + .responseTimeout(Duration.ofMillis(context.getTimeoutMs())); |
| 265 | + |
238 | 266 | webClientBuilder.defaultCookies(injectCookies(context));
|
239 | 267 | WebClient client = webClientBuilder
|
240 | 268 | .exchangeStrategies(exchangeStrategies)
|
| 269 | + .clientConnector(new ReactorClientHttpConnector(httpClient)) |
241 | 270 | .build();
|
242 | 271 |
|
243 | 272 | BodyInserter<?, ? super ClientHttpRequest> bodyInserter = buildBodyInserter(
|
|
0 commit comments