From 955c6d1c017b7b80adf92f56e451f7a50ad2b692 Mon Sep 17 00:00:00 2001 From: Tihon Date: Tue, 17 Mar 2026 16:48:36 +0200 Subject: [PATCH] added swagger examples --- .../config/OpenApiExamplesCustomizer.java | 142 +++++++++++++++++- 1 file changed, 141 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/honey/honey/config/OpenApiExamplesCustomizer.java b/src/main/java/com/honey/honey/config/OpenApiExamplesCustomizer.java index 34c58c9..4b4ea21 100644 --- a/src/main/java/com/honey/honey/config/OpenApiExamplesCustomizer.java +++ b/src/main/java/com/honey/honey/config/OpenApiExamplesCustomizer.java @@ -7,6 +7,7 @@ import org.springdoc.core.customizers.GlobalOpenApiCustomizer; import org.springframework.stereotype.Component; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -18,12 +19,23 @@ import java.util.Map; public class OpenApiExamplesCustomizer implements GlobalOpenApiCustomizer { public static final String EXAMPLE_CURRENT_USER_RESPONSE = "CurrentUserResponse"; + public static final String EXAMPLE_LANGUAGE_REQUEST = "LanguageRequest"; + public static final String EXAMPLE_DEPOSIT_METHODS_RESPONSE = "DepositMethodsResponse"; + public static final String EXAMPLE_DEPOSIT_ADDRESS_REQUEST = "DepositAddressRequest"; + public static final String EXAMPLE_DEPOSIT_ADDRESS_RESPONSE = "DepositAddressResponse"; @Override public void customise(OpenAPI openAPI) { ensureComponents(openAPI); addCurrentUserResponseExample(openAPI); attachCurrentUserExampleToEndpoint(openAPI); + addLanguageRequestExample(openAPI); + attachLanguageExampleToEndpoint(openAPI); + addDepositMethodsResponseExample(openAPI); + attachDepositMethodsExampleToEndpoint(openAPI); + addDepositAddressRequestExample(openAPI); + addDepositAddressResponseExample(openAPI); + attachDepositAddressExamplesToEndpoint(openAPI); } private void ensureComponents(OpenAPI openAPI) { @@ -74,10 +86,138 @@ public class OpenApiExamplesCustomizer implements GlobalOpenApiCustomizer { MediaType json = response200.getContent().get("application/json"); if (json == null) return; - // Reuse the component example so Swagger UI shows it (same instance as in components) Example example = (Example) openAPI.getComponents().getExamples().get(EXAMPLE_CURRENT_USER_RESPONSE); if (example != null) { json.setExamples(Map.of("success", example)); } } + + private void addLanguageRequestExample(OpenAPI openAPI) { + Map value = new LinkedHashMap<>(); + value.put("languageCode", "PL"); + Example example = new Example(); + example.setSummary("Update language request"); + example.setValue(value); + openAPI.getComponents().getExamples().put(EXAMPLE_LANGUAGE_REQUEST, example); + } + + private void attachLanguageExampleToEndpoint(OpenAPI openAPI) { + var paths = openAPI.getPaths(); + if (paths == null) return; + var pathItem = paths.get("/api/users/language"); + if (pathItem == null || pathItem.getPut() == null) return; + var requestBody = pathItem.getPut().getRequestBody(); + if (requestBody == null || requestBody.getContent() == null) return; + MediaType json = requestBody.getContent().get("application/json"); + if (json == null) return; + Example example = (Example) openAPI.getComponents().getExamples().get(EXAMPLE_LANGUAGE_REQUEST); + if (example != null) { + json.setExamples(Map.of("PL", example)); + } + } + + private void addDepositMethodsResponseExample(OpenAPI openAPI) { + Map value = new LinkedHashMap<>(); + value.put("minimumDeposit", 2.50); + value.put("activeMethods", List.of( + Map.of( + "pid", 235, + "name", "TON", + "network", "TON", + "example", "UQAm3JwwV_wMgmJ05AzHqtlHAdkyJt58N-JHV2Uhf80hOEKD", + "minDepositSum", 2.50 + ), + Map.of( + "pid", 90, + "name", "TRON", + "network", "TRC20", + "example", "TMQqX43PAMZPXPxX6Qj1fCyeiMWLgW35yF", + "minDepositSum", 2.50 + ), + Map.of( + "pid", 10, + "name", "Bitcoin", + "network", "BTC", + "example", "131qX9kauDpCGyn2MfAFwHcrrVk7JTLAYj", + "minDepositSum", 2.50 + ) + )); + Example example = new Example(); + example.setSummary("Deposit methods response"); + example.setValue(value); + openAPI.getComponents().getExamples().put(EXAMPLE_DEPOSIT_METHODS_RESPONSE, example); + } + + private void attachDepositMethodsExampleToEndpoint(OpenAPI openAPI) { + var paths = openAPI.getPaths(); + if (paths == null) return; + var pathItem = paths.get("/api/payments/deposit-methods"); + if (pathItem == null || pathItem.getGet() == null) return; + var responses = pathItem.getGet().getResponses(); + if (responses == null) return; + var response200 = responses.get("200"); + if (response200 == null || response200.getContent() == null) return; + MediaType json = response200.getContent().get("application/json"); + if (json == null) return; + Example example = (Example) openAPI.getComponents().getExamples().get(EXAMPLE_DEPOSIT_METHODS_RESPONSE); + if (example != null) { + json.setExamples(Map.of("success", example)); + } + } + + private void addDepositAddressRequestExample(OpenAPI openAPI) { + Map value = new LinkedHashMap<>(); + value.put("pid", 235); + value.put("usdAmount", 3); + Example example = new Example(); + example.setSummary("Deposit address request"); + example.setValue(value); + openAPI.getComponents().getExamples().put(EXAMPLE_DEPOSIT_ADDRESS_REQUEST, example); + } + + private void addDepositAddressResponseExample(OpenAPI openAPI) { + Map value = new LinkedHashMap<>(); + value.put("address", "UQAY95OcdK3Cu-SEflKsaeN7y463BASTmnY9OUdRLJK-FDxc"); + value.put("amountCoins", "2.234549"); + value.put("name", "TON"); + value.put("network", "-"); + value.put("psId", 235); + value.put("minAmount", 2.5); + Example example = new Example(); + example.setSummary("Deposit address response"); + example.setValue(value); + openAPI.getComponents().getExamples().put(EXAMPLE_DEPOSIT_ADDRESS_RESPONSE, example); + } + + private void attachDepositAddressExamplesToEndpoint(OpenAPI openAPI) { + var paths = openAPI.getPaths(); + if (paths == null) return; + var pathItem = paths.get("/api/payments/deposit-address"); + if (pathItem == null || pathItem.getPost() == null) return; + + var requestBody = pathItem.getPost().getRequestBody(); + if (requestBody != null && requestBody.getContent() != null) { + MediaType reqJson = requestBody.getContent().get("application/json"); + if (reqJson != null) { + Example reqExample = (Example) openAPI.getComponents().getExamples().get(EXAMPLE_DEPOSIT_ADDRESS_REQUEST); + if (reqExample != null) { + reqJson.setExamples(Map.of("example", reqExample)); + } + } + } + + var responses = pathItem.getPost().getResponses(); + if (responses != null) { + var response200 = responses.get("200"); + if (response200 != null && response200.getContent() != null) { + MediaType resJson = response200.getContent().get("application/json"); + if (resJson != null) { + Example resExample = (Example) openAPI.getComponents().getExamples().get(EXAMPLE_DEPOSIT_ADDRESS_RESPONSE); + if (resExample != null) { + resJson.setExamples(Map.of("success", resExample)); + } + } + } + } + } }