HybrisHttpResult executeGroovyScript()

in src/com/intellij/idea/plugin/hybris/tools/remote/http/HybrisHacHttpClient.java [224:275]


    HybrisHttpResult executeGroovyScript(
        final Project project, final String content, final boolean isCommitMode, final int timeout
    ) {

        final var settings = RemoteConnectionUtil.INSTANCE.getActiveRemoteConnectionSettings(project, RemoteConnectionType.Hybris);
        final var params = Arrays.asList(
            new BasicNameValuePair("scriptType", "groovy"),
            new BasicNameValuePair("commit", String.valueOf(isCommitMode)),
            new BasicNameValuePair("script", content)
        );
        HybrisHttpResult.HybrisHttpResultBuilder resultBuilder = createResult();
        final String actionUrl = settings.getGeneratedURL() + "/console/scripting/execute";

        final HttpResponse response = post(project, actionUrl, params, true, timeout, settings);
        final StatusLine statusLine = response.getStatusLine();
        resultBuilder = resultBuilder.httpCode(statusLine.getStatusCode());
        if (statusLine.getStatusCode() != SC_OK || response.getEntity() == null) {
            return resultBuilder.errorMessage("[" + statusLine.getStatusCode() + "] " +
                statusLine.getReasonPhrase()).build();
        }
        final Document document;
        try {
            document = parse(response.getEntity().getContent(), StandardCharsets.UTF_8.name(), "");
        } catch (final IOException e) {
            return resultBuilder.errorMessage(e.getMessage() + ' ' + actionUrl).httpCode(SC_BAD_REQUEST).build();
        }
        final Elements fsResultStatus = document.getElementsByTag("body");
        if (fsResultStatus == null) {
            return resultBuilder.errorMessage("No data in response").build();
        }
        final Map json = parseResponse(fsResultStatus);

        if (json == null) {
            return createResult()
                .errorMessage("Cannot parse response from the server...")
                .build();
        }

        if (json.get("stacktraceText") != null && isNotEmpty(json.get("stacktraceText").toString())) {
            return createResult()
                .errorMessage(json.get("stacktraceText").toString())
                .build();
        }

        if (json.get("outputText") != null) {
            resultBuilder.output(json.get("outputText").toString());
        }
        if (json.get("executionResult") != null) {
            resultBuilder.result(json.get("executionResult").toString());
        }
        return resultBuilder.build();
    }