Skip to content

Commit be07fda

Browse files
authored
fix: API Catalog swagger link (#2344)
* Add version for gateway api Signed-off-by: Carson Cook <carson.cook@ibm.com> * Set unit tests Signed-off-by: Carson Cook <carson.cook@ibm.com> * Use api version instead of hardcoded Signed-off-by: Carson Cook <carson.cook@ibm.com>
1 parent d8644f2 commit be07fda

File tree

6 files changed

+415
-372
lines changed

6 files changed

+415
-372
lines changed

api-catalog-services/src/main/java/org/zowe/apiml/apicatalog/swagger/api/ApiDocV2Service.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.springframework.beans.factory.annotation.Value;
2121
import org.zowe.apiml.apicatalog.services.cached.model.ApiDocInfo;
2222
import org.zowe.apiml.apicatalog.swagger.ApiDocTransformationException;
23+
import org.zowe.apiml.config.ApiInfo;
2324
import org.zowe.apiml.product.gateway.GatewayClient;
2425
import org.zowe.apiml.product.gateway.GatewayConfigProperties;
2526

@@ -47,7 +48,7 @@ public String transformApiDoc(String serviceId, ApiDocInfo apiDocInfo) {
4748

4849
boolean hidden = swagger.getTag(HIDDEN_TAG) != null;
4950

50-
updateSchemeHostAndLink(swagger, serviceId, hidden);
51+
updateSchemeHostAndLink(swagger, serviceId, apiDocInfo.getApiInfo(), hidden);
5152
updatePaths(swagger, serviceId, apiDocInfo, hidden);
5253
updateExternalDoc(swagger, apiDocInfo);
5354

@@ -66,9 +67,9 @@ public String transformApiDoc(String serviceId, ApiDocInfo apiDocInfo) {
6667
* @param serviceId the unique service id
6768
* @param hidden do not add link for automatically generated API doc
6869
*/
69-
private void updateSchemeHostAndLink(Swagger swagger, String serviceId, boolean hidden) {
70+
private void updateSchemeHostAndLink(Swagger swagger, String serviceId, ApiInfo apiInfo, boolean hidden) {
7071
GatewayConfigProperties gatewayConfigProperties = gatewayClient.getGatewayConfigProperties();
71-
String swaggerLink = OpenApiUtil.getOpenApiLink(serviceId, gatewayConfigProperties, scheme);
72+
String swaggerLink = OpenApiUtil.getOpenApiLink(serviceId, apiInfo, gatewayConfigProperties, scheme);
7273
log.debug("Updating host for service with id: " + serviceId + " to: " + gatewayConfigProperties.getHostname());
7374
swagger.setSchemes(Collections.singletonList(Scheme.forValue(scheme)));
7475
swagger.setHost(gatewayConfigProperties.getHostname());

api-catalog-services/src/main/java/org/zowe/apiml/apicatalog/swagger/api/ApiDocV3Service.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.zowe.apiml.apicatalog.services.cached.model.ApiDocInfo;
2929
import org.zowe.apiml.apicatalog.swagger.ApiDocTransformationException;
3030
import org.zowe.apiml.apicatalog.swagger.SecuritySchemeSerializer;
31+
import org.zowe.apiml.config.ApiInfo;
3132
import org.zowe.apiml.product.gateway.GatewayClient;
3233
import org.zowe.apiml.product.gateway.GatewayConfigProperties;
3334
import org.zowe.apiml.product.routing.RoutedService;
@@ -65,7 +66,7 @@ public String transformApiDoc(String serviceId, ApiDocInfo apiDocInfo) {
6566
boolean hidden = isHidden(openAPI.getTags());
6667

6768
updatePaths(openAPI, serviceId, apiDocInfo, hidden);
68-
updateServerAndLink(openAPI, serviceId, hidden);
69+
updateServerAndLink(openAPI, serviceId, apiDocInfo.getApiInfo(), hidden);
6970
updateExternalDoc(openAPI, apiDocInfo);
7071

7172
try {
@@ -76,9 +77,9 @@ public String transformApiDoc(String serviceId, ApiDocInfo apiDocInfo) {
7677
}
7778
}
7879

79-
private void updateServerAndLink(OpenAPI openAPI, String serviceId, boolean hidden) {
80+
private void updateServerAndLink(OpenAPI openAPI, String serviceId, ApiInfo apiInfo, boolean hidden) {
8081
GatewayConfigProperties gatewayConfigProperties = gatewayClient.getGatewayConfigProperties();
81-
String swaggerLink = OpenApiUtil.getOpenApiLink(serviceId, gatewayConfigProperties, scheme);
82+
String swaggerLink = OpenApiUtil.getOpenApiLink(serviceId, apiInfo, gatewayConfigProperties, scheme);
8283

8384
if (openAPI.getServers() != null) {
8485
openAPI.getServers()

api-catalog-services/src/main/java/org/zowe/apiml/apicatalog/swagger/api/OpenApiUtil.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.zowe.apiml.apicatalog.swagger.api;
1111

1212
import lombok.experimental.UtilityClass;
13+
import org.zowe.apiml.config.ApiInfo;
1314
import org.zowe.apiml.product.constants.CoreService;
1415
import org.zowe.apiml.product.gateway.GatewayConfigProperties;
1516

@@ -19,13 +20,16 @@ public class OpenApiUtil {
1920
private static final String SWAGGER_LOCATION_LINK = "[Swagger/OpenAPI JSON Document]";
2021
private static final String CATALOG_VERSION = "/api/v1";
2122
private static final String CATALOG_APIDOC_ENDPOINT = "/apidoc";
22-
private static final String HARDCODED_VERSION = "/v1";
2323
public static final String SEPARATOR = "/";
24+
public static final String URL_ENCODED_SPACE = "%20";
2425

25-
public static String getOpenApiLink(String serviceId, GatewayConfigProperties gatewayConfigProperties, String scheme) {
26+
public static String getOpenApiLink(String serviceId, ApiInfo apiInfo, GatewayConfigProperties gatewayConfigProperties, String scheme) {
2627
String link = scheme + "://" + gatewayConfigProperties.getHostname()
2728
+ SEPARATOR + CoreService.API_CATALOG.getServiceId() + CATALOG_VERSION
28-
+ CATALOG_APIDOC_ENDPOINT + SEPARATOR + serviceId + HARDCODED_VERSION;
29+
+ CATALOG_APIDOC_ENDPOINT + SEPARATOR + serviceId;
30+
if (apiInfo != null) {
31+
link = link + SEPARATOR + apiInfo.getApiId() + URL_ENCODED_SPACE + apiInfo.getVersion();
32+
}
2933
return "\n\n" + SWAGGER_LOCATION_LINK + "(" + link + ")";
3034
}
3135

0 commit comments

Comments
 (0)