Skip to content

Commit

Permalink
try help escape when the payload is not valid
Browse files Browse the repository at this point in the history
Signed-off-by: Mingshi Liu <[email protected]>
  • Loading branch information
mingshl committed Aug 14, 2024
1 parent 0dcc453 commit 86d4598
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -314,53 +314,25 @@ public <T> T createPayload(String action, Map<String, String> parameters) {
Optional<ConnectorAction> connectorAction = findAction(action);
if (connectorAction.isPresent() && connectorAction.get().getRequestBody() != null) {
String payload = connectorAction.get().getRequestBody();
payload = fillNullParameters(parameters, payload);
// parameters = formatArrayParameters(parameters);
StringSubstitutor substitutor = new StringSubstitutor(parameters, "${parameters.", "}");
payload = substitutor.replace(payload);

// if (!isJson(payload)) {
try {
JsonObject jsonObject = JsonParser.parseString(payload).getAsJsonObject();
String validJson = jsonObject.toString();
System.out.println("Valid JSON String: " + validJson);
} catch (Exception e) {
System.out.println("Invalid JSON String, attempting manual fix...");

// Manual fix by escaping double quotes
boolean isJson = isJson(payload);
if (!isJson) {
// when the payload is not valid, try fix by escaping double quotes
String manuallyFixedJson = payload.replace("\"", "\\\"");
System.out.println("Manually Fixed JSON String: " + manuallyFixedJson);
if (!isJson(manuallyFixedJson)){
throw new IllegalArgumentException("Invalid payload: " + payload);
}
else{
payload = manuallyFixedJson;
}

// throw new IllegalArgumentException("Invalid payload: " + payload);
// }
}
return (T) payload;
}
return (T) parameters.get("http_body");
}

private Map<String,String> formatArrayParameters(Map<String, String> parameters) {
Map<String,String> newParameters = new HashMap<>();
for (Map.Entry<String, String> entry : parameters.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
String escapedValue = escapeJsonArrayIfNeeded(value);
newParameters.put(key,escapedValue);
}
return newParameters;
}
protected String escapeJsonArrayIfNeeded(String value) {
if (isJsonArray(value)) {
return value.replaceAll("([^\\\\])\"", "$1\\\\\"");
}
return value;
}

protected boolean isJsonArray(String value) {
Pattern jsonArrayPattern = Pattern.compile("^\\[.*\\]$");
return jsonArrayPattern.matcher(value).matches();
}


protected String fillNullParameters(Map<String, String> parameters, String payload) {
List<String> bodyParams = findStringParametersWithNullDefaultValue(payload);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ public void executePredict_TextDocsInferenceInput_withStepSize_partiallyFailed_t

ArgumentCaptor<Exception> exceptionCaptor = ArgumentCaptor.forClass(Exception.class);
Mockito.verify(actionListener, times(1)).onFailure(exceptionCaptor.capture());
// assert exceptionCaptor.getValue() instanceof OpenSearchStatusException;
// assert exceptionCaptor.getValue() instanceof OpenSearchStatusException;
assertEquals("test failure", exceptionCaptor.getValue().getMessage());
}

Expand Down

0 comments on commit 86d4598

Please sign in to comment.