org.infinispan.client.rest.impl.okhttp.RestTaskClientOkHttp Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of infinispan-client-rest-jakarta Show documentation
Show all versions of infinispan-client-rest-jakarta Show documentation
Infinispan REST Client Jakarta
The newest version!
package org.infinispan.client.rest.impl.okhttp;
import static org.infinispan.client.rest.impl.okhttp.RestClientOkHttp.EMPTY_BODY;
import static org.infinispan.client.rest.impl.okhttp.RestClientOkHttp.sanitize;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletionStage;
import org.infinispan.client.rest.RestEntity;
import org.infinispan.client.rest.RestResponse;
import org.infinispan.client.rest.RestTaskClient;
import okhttp3.Request;
/**
* @author Tristan Tarrant <[email protected]>
* @since 10.1
**/
public class RestTaskClientOkHttp implements RestTaskClient {
private final RestClientOkHttp client;
private final String baseURL;
RestTaskClientOkHttp(RestClientOkHttp client) {
this.client = client;
this.baseURL = String.format("%s%s/v2/tasks", client.getBaseURL(), client.getConfiguration().contextPath()).replaceAll("//", "/");
}
@Override
public CompletionStage list(ResultType resultType) {
return client.execute(baseURL + "?type=" + resultType.toString());
}
@Override
public CompletionStage exec(String taskName, String cacheName, Map parameters) {
Objects.requireNonNull(taskName);
Objects.requireNonNull(parameters);
Request.Builder builder = new Request.Builder();
StringBuilder sb = new StringBuilder(baseURL).append('/').append(taskName);
sb.append("?action=exec");
if (cacheName != null) {
sb.append("&cache=");
sb.append(cacheName);
}
for (Map.Entry parameter : parameters.entrySet()) {
sb.append("¶m.");
sb.append(parameter.getKey());
sb.append('=');
sb.append(sanitize(parameter.getValue().toString()));
}
builder.url(sb.toString()).post(EMPTY_BODY);
return client.execute(builder);
}
@Override
public CompletionStage uploadScript(String taskName, RestEntity script) {
Request.Builder builder = new Request.Builder();
builder.url(baseURL + "/" + sanitize(taskName)).post(((RestEntityAdaptorOkHttp) script).toRequestBody());
return client.execute(builder);
}
@Override
public CompletionStage downloadScript(String taskName) {
Request.Builder builder = new Request.Builder();
builder.url(baseURL + "/" + sanitize(taskName) + "?action=script");
return client.execute(builder);
}
}