This commit is contained in:
@@ -7,6 +7,7 @@ import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,12 +19,23 @@ import java.util.Map;
|
|||||||
public class OpenApiExamplesCustomizer implements GlobalOpenApiCustomizer {
|
public class OpenApiExamplesCustomizer implements GlobalOpenApiCustomizer {
|
||||||
|
|
||||||
public static final String EXAMPLE_CURRENT_USER_RESPONSE = "CurrentUserResponse";
|
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
|
@Override
|
||||||
public void customise(OpenAPI openAPI) {
|
public void customise(OpenAPI openAPI) {
|
||||||
ensureComponents(openAPI);
|
ensureComponents(openAPI);
|
||||||
addCurrentUserResponseExample(openAPI);
|
addCurrentUserResponseExample(openAPI);
|
||||||
attachCurrentUserExampleToEndpoint(openAPI);
|
attachCurrentUserExampleToEndpoint(openAPI);
|
||||||
|
addLanguageRequestExample(openAPI);
|
||||||
|
attachLanguageExampleToEndpoint(openAPI);
|
||||||
|
addDepositMethodsResponseExample(openAPI);
|
||||||
|
attachDepositMethodsExampleToEndpoint(openAPI);
|
||||||
|
addDepositAddressRequestExample(openAPI);
|
||||||
|
addDepositAddressResponseExample(openAPI);
|
||||||
|
attachDepositAddressExamplesToEndpoint(openAPI);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureComponents(OpenAPI openAPI) {
|
private void ensureComponents(OpenAPI openAPI) {
|
||||||
@@ -74,10 +86,138 @@ public class OpenApiExamplesCustomizer implements GlobalOpenApiCustomizer {
|
|||||||
MediaType json = response200.getContent().get("application/json");
|
MediaType json = response200.getContent().get("application/json");
|
||||||
if (json == null) return;
|
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);
|
Example example = (Example) openAPI.getComponents().getExamples().get(EXAMPLE_CURRENT_USER_RESPONSE);
|
||||||
if (example != null) {
|
if (example != null) {
|
||||||
json.setExamples(Map.of("success", example));
|
json.setExamples(Map.of("success", example));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addLanguageRequestExample(OpenAPI openAPI) {
|
||||||
|
Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user