diff --git a/src/Nest/Modules/Scripting/IStoredScript.cs b/src/Nest/Modules/Scripting/IStoredScript.cs
index d5c0fdbce54..7425dac9d04 100644
--- a/src/Nest/Modules/Scripting/IStoredScript.cs
+++ b/src/Nest/Modules/Scripting/IStoredScript.cs
@@ -1,33 +1,50 @@
-using System.Collections.Generic;
-using Elasticsearch.Net;
+using Elasticsearch.Net;
using Newtonsoft.Json;
namespace Nest
{
+ ///
+ /// A Stored script
+ ///
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
[JsonConverter(typeof(ReadAsTypeJsonConverter))]
public interface IStoredScript
{
+ ///
+ /// The script language
+ ///
[JsonProperty("lang")]
string Lang { get; set; }
+ ///
+ /// The script source
+ ///
[JsonProperty("source")]
string Source { get; set; }
}
+
+ ///
public class StoredScript : IStoredScript
{
[JsonProperty("lang")]
string IStoredScript.Lang { get; set; }
+
[JsonProperty("source")]
string IStoredScript.Source { get; set; }
//used for deserialization
- internal StoredScript() { }
+ internal StoredScript() {}
+ ///
+ /// Instantiates a new instance of
+ ///
+ /// Script language
+ /// Script source
protected StoredScript(string lang, string source)
{
- ((IStoredScript) this).Lang = lang;
- ((IStoredScript) this).Source = source;
+ IStoredScript self = this;
+ self.Lang = lang;
+ self.Source = source;
}
}
@@ -36,39 +53,28 @@ public class PainlessScript : StoredScript
private static readonly string Lang = ScriptLang.Painless.GetStringValue();
public PainlessScript(string source) : base(Lang, source) { }
}
- public class GroovyScript : StoredScript
- {
- private static readonly string Lang = ScriptLang.Groovy.GetStringValue();
- public GroovyScript(string source) : base(Lang, source) { }
- }
- public class JavaScriptScript : StoredScript
- {
- private static readonly string Lang = ScriptLang.JS.GetStringValue();
- public JavaScriptScript(string source) : base(Lang, source) { }
- }
- public class PythonScript : StoredScript
- {
- private static readonly string Lang = ScriptLang.Python.GetStringValue();
- public PythonScript(string source) : base(Lang, source) { }
- }
+
public class LuceneExpressionScript : StoredScript
{
private static readonly string Lang = ScriptLang.Expression.GetStringValue();
public LuceneExpressionScript(string source) : base(Lang, source) { }
}
+
public class MustacheScript : StoredScript
{
private static readonly string Lang = ScriptLang.Mustache.GetStringValue();
- public MustacheScript(string source) : base(Lang, source) { }
+ public MustacheScript(string source) : base(Lang, source) { }
}
public class StoredScriptDescriptor : DescriptorBase, IStoredScript
{
- string IStoredScript.Lang { get; set; }
string IStoredScript.Source { get; set; }
+ string IStoredScript.Lang { get; set; }
+
+ public StoredScriptDescriptor Source(string source) => Assign(a => a.Source = source);
public StoredScriptDescriptor Lang(string lang) => Assign(a => a.Lang = lang);
- public StoredScriptDescriptor Source(string source) => Assign(a => a.Source = source);
+ public StoredScriptDescriptor Lang(ScriptLang lang) => Assign(a => a.Lang = lang.GetStringValue());
}
}
diff --git a/src/Nest/Modules/Scripting/PutScript/PutScriptRequest.cs b/src/Nest/Modules/Scripting/PutScript/PutScriptRequest.cs
index cb764fa906e..9b90e037628 100644
--- a/src/Nest/Modules/Scripting/PutScript/PutScriptRequest.cs
+++ b/src/Nest/Modules/Scripting/PutScript/PutScriptRequest.cs
@@ -22,11 +22,19 @@ public partial class PutScriptDescriptor
public PutScriptDescriptor Script(Func selector) =>
Assign(a => a.Script = selector?.Invoke(new StoredScriptDescriptor()));
+ ///
+ /// A Painless language script
+ ///
public PutScriptDescriptor Painless(string source) => Assign(a => a.Script = new PainlessScript(source));
- public PutScriptDescriptor Groovy(string source) => Assign(a => a.Script = new GroovyScript(source));
- public PutScriptDescriptor JavaScript(string source) => Assign(a => a.Script = new JavaScriptScript(source));
- public PutScriptDescriptor Python(string source) => Assign(a => a.Script = new PythonScript(source));
+
+ ///
+ /// A Lucene expression language script
+ ///
public PutScriptDescriptor LuceneExpression(string source) => Assign(a => a.Script = new LuceneExpressionScript(source));
+
+ ///
+ /// A Mustache template language script
+ ///
public PutScriptDescriptor Mustache(string source) => Assign(a => a.Script = new MustacheScript(source));
}
}
diff --git a/src/Nest/Modules/Scripting/ScriptLang.cs b/src/Nest/Modules/Scripting/ScriptLang.cs
index 96c1a2ee085..a4f7e141994 100644
--- a/src/Nest/Modules/Scripting/ScriptLang.cs
+++ b/src/Nest/Modules/Scripting/ScriptLang.cs
@@ -10,15 +10,6 @@ public enum ScriptLang
[EnumMember(Value = "painless")]
Painless,
- [EnumMember(Value = "groovy")]
- Groovy,
-
- [EnumMember(Value = "js")]
- JS,
-
- [EnumMember(Value = "python")]
- Python,
-
[EnumMember(Value = "expression")]
Expression,
diff --git a/src/Tests/Modules/Scripting/PutScript/PutScriptApiTests.cs b/src/Tests/Modules/Scripting/PutScript/PutScriptApiTests.cs
index 5201cd7ac8e..f53342a0284 100644
--- a/src/Tests/Modules/Scripting/PutScript/PutScriptApiTests.cs
+++ b/src/Tests/Modules/Scripting/PutScript/PutScriptApiTests.cs
@@ -1,5 +1,6 @@
using System;
using Elasticsearch.Net;
+using FluentAssertions;
using Nest;
using Tests.Framework;
using Tests.Framework.Integration;
@@ -9,13 +10,12 @@
namespace Tests.Modules.Scripting.PutScript
{
public class PutScriptApiTests
- : ApiTestBase
+ : ApiIntegrationTestBase
{
public PutScriptApiTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
private static readonly string _name = "scrpt1";
-
protected override LazyResponses ClientUsage() => Calls(
fluent: (client, f) => client.PutScript(_name, f),
fluentAsync: (client, f) => client.PutScriptAsync(_name, f),
@@ -25,12 +25,18 @@ protected override LazyResponses ClientUsage() => Calls(
protected override HttpMethod HttpMethod => HttpMethod.PUT;
protected override string UrlPath => $"/_scripts/{_name}";
+ protected override int ExpectStatusCode => 200;
+ protected override bool ExpectIsValid => true;
protected override bool SupportsDeserialization => false;
- protected override object ExpectJson { get; } = new
+ protected override object ExpectJson => new
{
- script = new { lang = "painless", source = "1+1" }
+ script = new
+ {
+ lang = "painless",
+ source = "1+1"
+ }
};
protected override PutScriptDescriptor NewDescriptor() => new PutScriptDescriptor(_name);
@@ -42,5 +48,11 @@ protected override LazyResponses ClientUsage() => Calls(
{
Script = new PainlessScript("1+1")
};
+
+ protected override void ExpectResponse(IPutScriptResponse response)
+ {
+ response.ShouldBeValid();
+ response.Acknowledged.Should().BeTrue();
+ }
}
}