From 15394207a59d9d160ffdbd3d2897b4de13dca106 Mon Sep 17 00:00:00 2001 From: Nayan Date: Thu, 21 Apr 2022 15:52:27 +0600 Subject: [PATCH] feat: Add API to get template filters (#12969) Adds a new API to get available filters for application templates from Appsmith cloud services. It acts as a proxy to the API. --- .../ce/ApplicationTemplateControllerCE.java | 6 ++++++ .../ce/ApplicationTemplateServiceCE.java | 1 + .../ce/ApplicationTemplateServiceCEImpl.java | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/ApplicationTemplateControllerCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/ApplicationTemplateControllerCE.java index 66c1b2a5a7..0b3b6dc8fe 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/ApplicationTemplateControllerCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ce/ApplicationTemplateControllerCE.java @@ -40,6 +40,12 @@ public class ApplicationTemplateControllerCE { .map(templates -> new ResponseDTO<>(HttpStatus.OK.value(), templates, null)); } + @GetMapping("filters") + public Mono> getFilters() { + return applicationTemplateService.getFilters() + .map(filters -> new ResponseDTO<>(HttpStatus.OK.value(), filters, null)); + } + @PostMapping("{templateId}/import/{organizationId}") public Mono> importApplicationFromTemplate(@PathVariable String templateId, @PathVariable String organizationId) { diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCE.java index 3315c85656..7d43cea67d 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCE.java @@ -10,4 +10,5 @@ public interface ApplicationTemplateServiceCE { Flux getSimilarTemplates(String templateId); Mono getTemplateDetails(String templateId); Mono importApplicationFromTemplate(String templateId, String organizationId); + Mono getFilters(); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCEImpl.java index 71c40c5e21..929cf8e201 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationTemplateServiceCEImpl.java @@ -137,6 +137,24 @@ public class ApplicationTemplateServiceCEImpl implements ApplicationTemplateServ }); } + @Override + public Mono getFilters() { + final String baseUrl = cloudServicesConfig.getBaseUrl(); + + return WebClient + .create(baseUrl + "/api/v1/app-templates/filters") + .get() + .exchangeToMono(clientResponse -> { + if (clientResponse.statusCode().equals(HttpStatus.OK)) { + return clientResponse.bodyToMono(ApplicationTemplate.class); + } else if (clientResponse.statusCode().isError()) { + return Mono.error(new AppsmithException(AppsmithError.CLOUD_SERVICES_ERROR, clientResponse.statusCode())); + } else { + return clientResponse.createException().flatMap(Mono::error); + } + }); + } + public static class NoEncodingUriBuilderFactory extends DefaultUriBuilderFactory { public NoEncodingUriBuilderFactory(String baseUriTemplate) { super(UriComponentsBuilder.fromHttpUrl(baseUriTemplate));