Skip to content

Commit 490e80c

Browse files
Refactor URI construction in invokeApiChatExecute and invokeApiChatPrepare to use URIBuilder for better readability and error handling
1 parent ea65be0 commit 490e80c

File tree

1 file changed

+24
-9
lines changed
  • components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl

1 file changed

+24
-9
lines changed

components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIConsumerImpl.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.commons.lang3.tuple.Pair;
3030
import org.apache.commons.logging.Log;
3131
import org.apache.commons.logging.LogFactory;
32+
import org.apache.http.client.utils.URIBuilder;
3233
import org.apache.solr.client.solrj.util.ClientUtils;
3334
import org.json.simple.JSONArray;
3435
import org.json.simple.JSONObject;
@@ -3360,13 +3361,22 @@ public String getOpenAPIDefinition(String apiId, String organization) throws API
33603361
public String invokeApiChatExecute(String apiChatRequestId, String apiType, String requestPayload) throws APIManagementException {
33613362
ApiChatConfigurationDTO configDto = ServiceReferenceHolder.getInstance().getAPIManagerConfigurationService()
33623363
.getAPIManagerConfiguration().getApiChatConfigurationDto();
3363-
String resourceWithQueryParam = configDto.getExecuteResource() + "?apiType=" + URLEncoder.encode(apiType, StandardCharsets.UTF_8);
3364-
if (configDto.isKeyProvided()) {
3365-
return APIUtil.invokeAIService(configDto.getEndpoint(), configDto.getTokenEndpoint(), configDto.getKey(),
3364+
try {
3365+
org.apache.http.client.utils.URIBuilder uriBuilder = new org.apache.http.client.utils.URIBuilder(configDto.getExecuteResource());
3366+
uriBuilder.addParameter("apiType", apiType);
3367+
String resourceWithQueryParam = uriBuilder.build().toString();
3368+
3369+
if (configDto.isKeyProvided()) {
3370+
return APIUtil.invokeAIService(configDto.getEndpoint(), configDto.getTokenEndpoint(), configDto.getKey(),
3371+
resourceWithQueryParam, requestPayload, apiChatRequestId);
3372+
}
3373+
return APIUtil.invokeAIService(configDto.getEndpoint(), null, configDto.getAccessToken(),
33663374
resourceWithQueryParam, requestPayload, apiChatRequestId);
3375+
} catch (java.net.URISyntaxException e) {
3376+
String errorMessage = "Error constructing URI for API Chat execute resource: " + e.getMessage();
3377+
log.error(errorMessage, e);
3378+
throw new APIManagementException(errorMessage, e);
33673379
}
3368-
return APIUtil.invokeAIService(configDto.getEndpoint(), null, configDto.getAccessToken(),
3369-
resourceWithQueryParam, requestPayload, apiChatRequestId);
33703380
}
33713381

33723382
@Override
@@ -3385,13 +3395,14 @@ public String invokeApiChatPrepare(String apiId, String apiChatRequestId, String
33853395
JsonNode openAPIDefinitionJsonNode = objectMapper.readTree(getOpenAPIDefinition(apiId, organization));
33863396
payload.set(APIConstants.OPEN_API, openAPIDefinitionJsonNode);
33873397
} else {
3388-
String errorMessage = "Unsupported API type for API Chat: " + apiType;
3389-
log.error(errorMessage);
3390-
throw new APIManagementException(errorMessage);
3398+
throw new APIManagementException("Unsupported API type for API Chat: " + apiType);
33913399
}
33923400
ApiChatConfigurationDTO configDto = ServiceReferenceHolder.getInstance().getAPIManagerConfigurationService()
33933401
.getAPIManagerConfiguration().getApiChatConfigurationDto();
3394-
String resourceWithQueryParam = configDto.getPrepareResource() + "?apiType=" + URLEncoder.encode(apiType, StandardCharsets.UTF_8);
3402+
3403+
org.apache.http.client.utils.URIBuilder uriBuilder = new org.apache.http.client.utils.URIBuilder(configDto.getPrepareResource());
3404+
uriBuilder.addParameter("apiType", apiType);
3405+
String resourceWithQueryParam = uriBuilder.build().toString();
33953406

33963407
if (configDto.isKeyProvided()) {
33973408
return APIUtil.invokeAIService(configDto.getEndpoint(), configDto.getTokenEndpoint(), configDto.getKey(),
@@ -3403,6 +3414,10 @@ public String invokeApiChatPrepare(String apiId, String apiChatRequestId, String
34033414
String error = "Error while parsing OpenAPI definition of API ID: " + apiId + " to JSON";
34043415
log.error(error, e);
34053416
throw new APIManagementException(error, e);
3417+
} catch (java.net.URISyntaxException e) {
3418+
String errorMessage = "Error constructing URI for API Chat prepare resource: " + e.getMessage();
3419+
log.error(errorMessage, e);
3420+
throw new APIManagementException(errorMessage, e);
34063421
}
34073422
}
34083423

0 commit comments

Comments
 (0)