This is an automated email from the ASF dual-hosted git repository. dstiggy pushed a commit to branch NIFI-12785 in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 9cbd06d32b6d88f3f66c3d1b14846ccdb91c5a29 Author: dystieg <dyst...@evoforge.org> AuthorDate: Wed Feb 28 22:53:43 2024 +0000 NIFI-12785 Refactored the code to avoidNIFI double encoding. --- .../nifi/processors/standard/InvokeHTTP.java | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java index 74161df700..4b287119f3 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java @@ -206,7 +206,8 @@ public class InvokeHTTP extends AbstractProcessor { public static final PropertyDescriptor HTTP_URL = new PropertyDescriptor.Builder() .name("Remote URL") .displayName("HTTP URL") - .description("HTTP remote URL including a scheme of http or https, as well as a hostname or IP address with optional port and path elements.") + .description("HTTP remote URL including a scheme of http or https, as well as a hostname or IP address with optional port and path elements." + + " Any encoding of the URL must be done by the user.") .required(true) .expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES) .addValidator(StandardValidators.URL_VALIDATOR) @@ -940,20 +941,17 @@ public class InvokeHTTP extends AbstractProcessor { FlowFile responseFlowFile = null; try { final String urlProperty = trimToEmpty(context.getProperty(HTTP_URL).evaluateAttributeExpressions(requestFlowFile).getValue()); - final URI uri = UriUtils.create(urlProperty); - final URL url = uri.toURL(); - - Request httpRequest = configureRequest(context, session, requestFlowFile, url); + Request httpRequest = configureRequest(context, session, requestFlowFile, urlProperty); logRequest(logger, httpRequest); if (httpRequest.body() != null) { - session.getProvenanceReporter().send(requestFlowFile, url.toExternalForm(), true); + session.getProvenanceReporter().send(requestFlowFile, urlProperty, true); } final long startNanos = System.nanoTime(); try (Response responseHttp = okHttpClient.newCall(httpRequest).execute()) { - logResponse(logger, url, responseHttp); + logResponse(logger, urlProperty, responseHttp); // store the status code and message int statusCode = responseHttp.code(); @@ -963,7 +961,7 @@ public class InvokeHTTP extends AbstractProcessor { Map<String, String> statusAttributes = new HashMap<>(); statusAttributes.put(STATUS_CODE, String.valueOf(statusCode)); statusAttributes.put(STATUS_MESSAGE, statusMessage); - statusAttributes.put(REQUEST_URL, url.toExternalForm()); + statusAttributes.put(REQUEST_URL, urlProperty); statusAttributes.put(REQUEST_DURATION, Long.toString(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanos))); statusAttributes.put(RESPONSE_URL, responseHttp.request().url().toString()); statusAttributes.put(TRANSACTION_ID, txId.toString()); @@ -1016,6 +1014,8 @@ public class InvokeHTTP extends AbstractProcessor { // update FlowFile's filename attribute with an extracted value from the remote URL if (FlowFileNamingStrategy.URL_PATH.equals(getFlowFileNamingStrategy(context)) && HttpMethod.GET.name().equals(httpRequest.method())) { + final URI uri = UriUtils.create(urlProperty); + final URL url = uri.toURL(); String fileName = getFileNameFromUrl(url); if (fileName != null) { responseFlowFile = session.putAttribute(responseFlowFile, CoreAttributes.FILENAME.key(), fileName); @@ -1039,9 +1039,9 @@ public class InvokeHTTP extends AbstractProcessor { // emit provenance event final long millis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanos); if (requestFlowFile != null) { - session.getProvenanceReporter().fetch(responseFlowFile, url.toExternalForm(), millis); + session.getProvenanceReporter().fetch(responseFlowFile, urlProperty, millis); } else { - session.getProvenanceReporter().receive(responseFlowFile, url.toExternalForm(), millis); + session.getProvenanceReporter().receive(responseFlowFile, urlProperty, millis); } } } @@ -1101,7 +1101,7 @@ public class InvokeHTTP extends AbstractProcessor { } } - private Request configureRequest(final ProcessContext context, final ProcessSession session, final FlowFile requestFlowFile, URL url) { + private Request configureRequest(final ProcessContext context, final ProcessSession session, final FlowFile requestFlowFile, String url) { final Request.Builder requestBuilder = new Request.Builder(); requestBuilder.url(url); @@ -1320,10 +1320,10 @@ public class InvokeHTTP extends AbstractProcessor { } } - private void logResponse(ComponentLog logger, URL url, Response response) { + private void logResponse(ComponentLog logger, String url, Response response) { if (logger.isDebugEnabled()) { logger.debug("\nResponse from remote service:\n\t{}\n{}", - url.toExternalForm(), getLogString(response.headers().toMultimap())); + url, getLogString(response.headers().toMultimap())); } }