diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java new file mode 100644 index 000000000..5b8b13c18 --- /dev/null +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPlugin.java @@ -0,0 +1,59 @@ +package io.nosqlbench.engine.extensions.http; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +public class HttpPlugin { + private HttpClient client = HttpClient.newHttpClient(); + + public HttpResponse get(String url) throws IOException, InterruptedException { + HttpRequest.Builder builder = HttpRequest.newBuilder(); + URI uri = URI.create(url); + HttpRequest request = builder + .uri(uri) + .build(); + + HttpResponse response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + + return response; + } + + public HttpResponse post(String url) throws IOException, InterruptedException { + return post(url, null, null); + } + + public HttpResponse post(String url, String data, String contentType) throws IOException, InterruptedException { + HttpRequest.Builder builder = HttpRequest.newBuilder(); + URI uri = URI.create(url); + + HttpRequest request; + if (data == null && contentType == null || contentType == null){ + request = builder + .uri(uri) + .POST(HttpRequest.BodyPublishers.noBody()) + .build(); + } else if (data == null) { + request = builder + .uri(uri) + .header("Content-Type", contentType) + .POST(HttpRequest.BodyPublishers.noBody()) + .build(); + } else { + request = builder + .uri(uri) + .header("Content-Type", contentType) + .POST(HttpRequest.BodyPublishers.ofString(data)) + .build(); + } + + HttpResponse response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + + return response; + } + +} diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java new file mode 100644 index 000000000..bfaf28171 --- /dev/null +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/http/HttpPluginData.java @@ -0,0 +1,27 @@ +package io.nosqlbench.engine.extensions.http; + +import com.codahale.metrics.MetricRegistry; +import io.nosqlbench.engine.api.extensions.ScriptingPluginInfo; +import io.nosqlbench.engine.extensions.optimizers.BobyqaOptimizerPlugin; +import io.nosqlbench.nb.annotations.Service; +import org.slf4j.Logger; + +import javax.script.ScriptContext; + +@Service(ScriptingPluginInfo.class) +public class HttpPluginData implements ScriptingPluginInfo { + @Override + public String getDescription() { + return "use http get and post in scripts"; + } + + @Override + public HttpPlugin getExtensionObject(Logger logger, MetricRegistry metricRegistry, ScriptContext scriptContext) { + return new HttpPlugin(); + } + + @Override + public String getBaseVariableName() { + return "http"; + } +}