diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ActionServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ActionServiceImpl.java index 1885100c18..e3aa2e277c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ActionServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ActionServiceImpl.java @@ -66,7 +66,7 @@ public class ActionServiceImpl extends BaseService providerUpdateMono = null; if ((action.getTemplateId() != null) && (action.getProviderId() != null)) { - providerUpdateMono = providerService - .getById(action.getProviderId()) + providerUpdateMono = marketplaceService + .getProviderById(action.getProviderId()) .switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, "Provider"))) .map(provider -> { ActionProvider actionProvider = new ActionProvider(); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java index 3a0c067703..bc01d11465 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java @@ -1,6 +1,7 @@ package com.appsmith.server.services; import com.appsmith.external.models.ApiTemplate; +import com.appsmith.external.models.Provider; import com.appsmith.server.dtos.ProviderPaginatedDTO; import org.springframework.util.MultiValueMap; import reactor.core.publisher.Mono; @@ -12,4 +13,5 @@ public interface MarketplaceService { Mono> getTemplates(MultiValueMap params); Mono> getCategories(); Mono subscribeAndUpdateStatisticsOfProvider(String providerId); + Mono getProviderById(String id); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java index 9b9f63d80d..9f76334957 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java @@ -1,6 +1,7 @@ package com.appsmith.server.services; import com.appsmith.external.models.ApiTemplate; +import com.appsmith.external.models.Provider; import com.appsmith.server.configurations.MarketplaceConfig; import com.appsmith.server.dtos.ProviderPaginatedDTO; import com.appsmith.server.exceptions.AppsmithError; @@ -141,6 +142,28 @@ public class MarketplaceServiceImpl implements MarketplaceService { .bodyToMono(Boolean.class); } + @Override + public Mono getProviderById(String id) { + URI uri = buildFullURI(null, PROVIDER_PATH + "/" + id); + + return webClient + .get() + .uri(uri) + .retrieve() + .bodyToMono(String.class) + .flatMap(stringBody -> { + Provider provider = null; + try { + provider = objectMapper.readValue(stringBody, Provider.class); + } catch (JsonProcessingException e) { + return Mono.error(new AppsmithException(AppsmithError.JSON_PROCESSING_ERROR, e)); + } + return Mono.just(provider); + }) + .timeout(Duration.ofMillis(timeoutInMillis)) + .doOnError(error -> Mono.error(new AppsmithException(AppsmithError.MARKETPLACE_TIMEOUT))); + } + private URI buildFullURI(MultiValueMap params, String path) { UriComponentsBuilder uriBuilder = UriComponentsBuilder.newInstance(); try {