package io.searchbox.indices.script;
import com.google.common.io.CharStreams;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import io.searchbox.action.AbstractAction;
import java.io.*;
import java.nio.charset.Charset;
public class CreateStoredScript extends AbstractStoredScript {
protected CreateStoredScript(Builder builder) {
super(builder);
this.payload = builder.payload;
setURI(buildURI());
}
@Override
public String getRestMethodName() {
return "POST";
}
public String getScriptName() {
return scriptName;
}
public ScriptLanguage getScriptLanguage() {
return scriptLanguage;
}
public static class Builder extends AbstractStoredScript.Builder<CreateStoredScript, Builder> {
private JsonElement payload;
public Builder(String scriptName) {
super(scriptName);
}
@Override
public CreateStoredScript build() {
return new CreateStoredScript(this);
}
public Builder setSource(String source) {
createPayload(source);
return this;
}
public Builder loadSource(File srcFile) throws IOException {
return loadSource(srcFile, Charset.forName(AbstractAction.CHARSET));
}
public Builder loadSource(File srcFile, Charset encoding) throws IOException {
return loadSource(new FileInputStream(srcFile), encoding);
}
public Builder loadSource(InputStream srcStream) throws IOException {
return loadSource(srcStream, Charset.forName(AbstractAction.CHARSET));
}
public Builder loadSource(InputStream srcStream, Charset encoding) throws IOException {
String src = CharStreams.toString(new InputStreamReader(srcStream, encoding));
createPayload(src);
return this;
}
private void createPayload(String source) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("script", source);
payload = jsonObject;
}
}
}