diff --git a/app/server/appsmith-interfaces/pom.xml b/app/server/appsmith-interfaces/pom.xml
index 82be696650..e1f3e596bf 100644
--- a/app/server/appsmith-interfaces/pom.xml
+++ b/app/server/appsmith-interfaces/pom.xml
@@ -32,11 +32,6 @@
3.5.0
-
- io.projectreactor
- reactor-core
-
-
org.springframework.boot
spring-boot-starter-data-mongodb-reactive
@@ -129,11 +124,25 @@
org.springframework
spring-webflux
+
io.projectreactor.netty
reactor-netty-core
provided
+
+
+ io.projectreactor.netty
+ reactor-netty-http
+ 1.0.17
+
+
+ io.projectreactor
+ reactor-core
+
+
+
+
diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/util/WebClientUtils.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/util/WebClientUtils.java
new file mode 100644
index 0000000000..8861dd16e5
--- /dev/null
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/util/WebClientUtils.java
@@ -0,0 +1,45 @@
+package com.appsmith.util;
+
+import org.springframework.http.client.reactive.ReactorClientHttpConnector;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.netty.http.client.HttpClient;
+
+public class WebClientUtils {
+
+ private WebClientUtils() {
+ }
+
+ public static WebClient create() {
+ return builder()
+ .build();
+ }
+
+ public static WebClient create(String baseUrl) {
+ return builder()
+ .baseUrl(baseUrl)
+ .build();
+ }
+
+ private static boolean shouldUseSystemProxy() {
+ return "true".equals(System.getProperty("java.net.useSystemProxies"))
+ && (!System.getProperty("http.proxyHost", "").isEmpty() || !System.getProperty("https.proxyHost", "").isEmpty());
+ }
+
+ public static WebClient.Builder builder() {
+ return builder(HttpClient.create());
+ }
+
+ public static WebClient.Builder builder(HttpClient httpClient) {
+ return WebClient.builder()
+ .clientConnector(new ReactorClientHttpConnector(applyProxyIfConfigured(httpClient)));
+ }
+
+ private static HttpClient applyProxyIfConfigured(HttpClient httpClient) {
+ if (shouldUseSystemProxy()) {
+ httpClient = httpClient.proxyWithSystemProperties();
+ }
+
+ return httpClient;
+ }
+
+}
diff --git a/app/server/appsmith-plugins/googleSheetsPlugin/pom.xml b/app/server/appsmith-plugins/googleSheetsPlugin/pom.xml
index 2156ced6da..07cca7937c 100644
--- a/app/server/appsmith-plugins/googleSheetsPlugin/pom.xml
+++ b/app/server/appsmith-plugins/googleSheetsPlugin/pom.xml
@@ -161,13 +161,6 @@
test
-
- io.projectreactor.netty
- reactor-netty
- 0.9.4.RELEASE
- provided
-
-
diff --git a/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/FileInfoMethod.java b/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/FileInfoMethod.java
index 8124d21567..a4f33249e7 100644
--- a/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/FileInfoMethod.java
+++ b/app/server/appsmith-plugins/googleSheetsPlugin/src/main/java/com/external/config/FileInfoMethod.java
@@ -3,6 +3,7 @@ package com.external.config;
import com.appsmith.external.exceptions.pluginExceptions.AppsmithPluginError;
import com.appsmith.external.exceptions.pluginExceptions.AppsmithPluginException;
import com.appsmith.external.models.OAuth2;
+import com.appsmith.util.WebClientUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.HttpMethod;
@@ -33,7 +34,7 @@ public class FileInfoMethod implements ExecutionMethod, TriggerMethod {
@Override
public Mono