Skip to content

Commit 744dbfc

Browse files
committed
Move Analyze parameters to json body
Make generated RequestParameter types partial classes Closes #2169
1 parent c520607 commit 744dbfc

File tree

12 files changed

+323
-238
lines changed

12 files changed

+323
-238
lines changed

src/CodeGeneration/ApiGenerator/ApiGenerator.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
<NoWarn>1591,1572,1571,1573,1587,1570</NoWarn>
3636
</PropertyGroup>
3737
<ItemGroup>
38+
<Content Include="last_downloaded_version.txt" />
3839
<Content Include="razormachine.readme.txt">
3940
<Paket>True</Paket>
4041
</Content>
@@ -61,6 +62,7 @@
6162
<Compile Include="Domain\RestApiSpec.cs" />
6263
<Compile Include="Extensions.cs" />
6364
<Compile Include="Overrides\Allow404\ApiEndpointsThatAllow404.cs" />
65+
<Compile Include="Overrides\Descriptors\AnalyzeDescriptorOverrides.cs" />
6466
<Compile Include="Overrides\Descriptors\ClearCacheDescriptorOverrides.cs" />
6567
<Compile Include="Overrides\Descriptors\ClearCachedRealmsDescriptorOverrides.cs" />
6668
<Compile Include="Overrides\Descriptors\ClearCachedRolesDescriptorOverrides.cs" />
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Collections.Generic;
2+
3+
namespace ApiGenerator.Overrides.Descriptors
4+
{
5+
public class AnalyzeDescriptorOverrides : DescriptorOverridesBase
6+
{
7+
public override IEnumerable<string> SkipQueryStringParams => new[]
8+
{
9+
"analyzer",
10+
"char_filters",
11+
"char_filter",
12+
"field",
13+
"filters",
14+
"filter",
15+
"text",
16+
"tokenizer"
17+
};
18+
}
19+
}

src/CodeGeneration/ApiGenerator/Views/RequestParameters.Generated.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace Elasticsearch.Net
2222
///@method.Documentation
2323
///</pre>
2424
///</summary>
25-
public class @method.QueryStringParamName : FluentRequestParameters<@method.QueryStringParamName>
25+
public partial class @method.QueryStringParamName : FluentRequestParameters<@method.QueryStringParamName>
2626
{
2727
public override HttpMethod DefaultHttpMethod => HttpMethod.@method.HttpMethod;
2828
@foreach (KeyValuePair<string, ApiQueryParameters> kv in method.Url.Params)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using System;
2+
3+
namespace Elasticsearch.Net
4+
{
5+
public partial class AnalyzeRequestParameters
6+
{
7+
///<summary>The name of the analyzer to use</summary>
8+
[Obsolete("Deprecated. Specify the analyzer to use in the body of the request.")]
9+
public AnalyzeRequestParameters Analyzer(string analyzer) => this;
10+
11+
///<summary>Deprecated : A comma-separated list of character filters to use for the analysis</summary>
12+
[Obsolete("Deprecated. Specify the char filters to use in the body of the request.")]
13+
public AnalyzeRequestParameters CharFilters(params string[] char_filters) => this;
14+
15+
///<summary>A comma-separated list of character filters to use for the analysis</summary>
16+
[Obsolete("Deprecated. Specify the char filters to use in the body of the request.")]
17+
public AnalyzeRequestParameters CharFilter(params string[] char_filter) => this;
18+
19+
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
20+
[Obsolete("Deprecated. Specify the field to use in the body of the request.")]
21+
public AnalyzeRequestParameters Field(string field) => this;
22+
23+
///<summary>Deprecated : A comma-separated list of filters to use for the analysis</summary>
24+
[Obsolete("Deprecated. Specify the filters to use in the body of the request.")]
25+
public AnalyzeRequestParameters Filters(params string[] filters) => this;
26+
27+
///<summary>A comma-separated list of filters to use for the analysis</summary>
28+
[Obsolete("Deprecated. Specify the filters to use in the body of the request.")]
29+
public AnalyzeRequestParameters Filter(params string[] filter) => this;
30+
31+
///<summary>The text on which the analysis should be performed (when request body is not used)</summary>
32+
[Obsolete("Deprecated. Specify the text to use in the body of the request.")]
33+
public AnalyzeRequestParameters Text(params string[] text) => this;
34+
35+
///<summary>The name of the tokenizer to use for the analysis</summary>
36+
[Obsolete("Deprecated. Specify the tokenizer to use in the body of the request.")]
37+
public AnalyzeRequestParameters Tokenizer(string tokenizer) => this;
38+
}
39+
}

src/Elasticsearch.Net/Domain/RequestParameters/RequestParameters.Generated.cs

Lines changed: 127 additions & 159 deletions
Large diffs are not rendered by default.

src/Elasticsearch.Net/Elasticsearch.Net.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
<Compile Include="Domain\Enums.Generated.cs" />
7777
<Compile Include="Domain\IHideObjectMembers.cs" />
7878
<Compile Include="Domain\IPropertyMapping.cs" />
79+
<Compile Include="Domain\RequestParameters\AnalyzeRequestParameters.cs" />
7980
<Compile Include="Domain\RequestParameters\FluentRequestParameters.cs" />
8081
<Compile Include="Domain\RequestParameters\IRequestParameters.cs" />
8182
<Compile Include="Domain\RequestParameters\RequestParameters.Generated.cs" />
Lines changed: 110 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,122 @@
1-
namespace Nest
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Linq.Expressions;
5+
using Newtonsoft.Json;
6+
7+
namespace Nest
28
{
3-
public partial interface IAnalyzeRequest { }
9+
[JsonConverter(typeof(ReadAsTypeJsonConverter<AnalyzeRequest>))]
10+
public partial interface IAnalyzeRequest
11+
{
12+
///<summary>The name of the analyzer to use</summary>
13+
[JsonProperty("analyzer")]
14+
string Analyzer { get; set; }
15+
16+
///<summary>A collection of character filters to use for the analysis</summary>
17+
[Obsolete("Deprecated in 2.4.0. Will be removed in 5.0. Use CharFilter instead")]
18+
string[] CharFilters { get; set; }
19+
20+
///<summary>A collection of character filters to use for the analysis</summary>
21+
[JsonProperty("char_filter")]
22+
string[] CharFilter { get; set; }
23+
24+
///<summary>A collection of filters to use for the analysis</summary>
25+
[JsonProperty("filter")]
26+
string[] Filter { get; set; }
27+
28+
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
29+
[JsonProperty("field")]
30+
Field Field { get; set; }
31+
32+
///<summary>A collection of filters to use for the analysis</summary>
33+
[Obsolete("Deprecated in 2.4.0. Will be removed in 5.0. Use Filter instead")]
34+
string[] Filters { get; set; }
35+
36+
///<summary>The text on which the analysis should be performed (when request body is not used)</summary>
37+
[JsonProperty("text")]
38+
string[] Text { get; set; }
439

5-
public partial class AnalyzeRequest
40+
///<summary>The name of the tokenizer to use for the analysis</summary>
41+
[JsonProperty("tokenizer")]
42+
string Tokenizer { get; set; }
43+
}
44+
45+
public partial class AnalyzeRequest
646
{
747
public AnalyzeRequest(IndexName indices, string textToAnalyze)
848
:this(indices)
949
{
1050
this.Text = new[] { textToAnalyze };
1151
}
52+
53+
///<summary>The name of the analyzer to use</summary>
54+
public string Analyzer { get; set; }
55+
56+
///<summary>A collection of character filters to use for the analysis</summary>
57+
[Obsolete("Will be removed in 5.0. Use CharFilter instead")]
58+
public string[] CharFilters { get { return CharFilter; } set { CharFilter = value; } }
59+
60+
///<summary>A collection of character filters to use for the analysis</summary>
61+
public string[] CharFilter { get; set; }
62+
63+
///<summary>A collection of filters to use for the analysis</summary>
64+
public string[] Filter { get; set; }
65+
66+
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
67+
public Field Field { get; set; }
68+
69+
///<summary>A collection of filters to use for the analysis</summary>
70+
[Obsolete("Will be removed in 5.0. Use Filter instead")]
71+
public string[] Filters { get { return Filter; } set { Filter = value; } }
72+
73+
///<summary>The text on which the analysis should be performed</summary>
74+
public string[] Text { get; set; }
75+
76+
///<summary>The name of the tokenizer to use for the analysis</summary>
77+
public string Tokenizer { get; set; }
1278
}
1379

1480
[DescriptorFor("IndicesAnalyze")]
15-
public partial class AnalyzeDescriptor { }
81+
public partial class AnalyzeDescriptor
82+
{
83+
string IAnalyzeRequest.Analyzer { get; set; }
84+
string[] IAnalyzeRequest.CharFilters { get { return Self.CharFilter; } set { Self.CharFilter = value; } }
85+
string[] IAnalyzeRequest.CharFilter { get; set; }
86+
string[] IAnalyzeRequest.Filter { get; set; }
87+
Field IAnalyzeRequest.Field { get; set; }
88+
string[] IAnalyzeRequest.Filters { get { return Self.Filter; } set { Self.Filter = value; } }
89+
string[] IAnalyzeRequest.Text { get; set; }
90+
string IAnalyzeRequest.Tokenizer { get; set; }
91+
92+
///<summary>The name of the analyzer to use</summary>
93+
public AnalyzeDescriptor Analyzer(string analyser) => Assign(a => a.Analyzer = analyser);
94+
95+
///<summary>A collection of character filters to use for the analysis</summary>
96+
public AnalyzeDescriptor CharFilter(params string[] charFilter) => Assign(a => a.CharFilter = charFilter);
97+
98+
///<summary>A collection of character filters to use for the analysis</summary>
99+
public AnalyzeDescriptor CharFilter(IEnumerable<string> charFilter) => Assign(a => a.CharFilter = charFilter.ToArray());
100+
101+
///<summary>A collection of filters to use for the analysis</summary>
102+
public AnalyzeDescriptor Filter(params string[] filter) => Assign(a => a.Filter = filter);
103+
104+
///<summary>A collection of filters to use for the analysis</summary>
105+
public AnalyzeDescriptor Filter(IEnumerable<string> filter) => Assign(a => a.Filter = filter.ToArray());
106+
107+
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
108+
public AnalyzeDescriptor Field(Field field) => Assign(a => a.Field = field);
109+
110+
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
111+
public AnalyzeDescriptor Field<T>(Expression<Func<T, object>> field) => Assign(a => a.Field = field);
112+
113+
///<summary>The text on which the analysis should be performed</summary>
114+
public AnalyzeDescriptor Text(params string[] text) => Assign(a => a.Text = text);
115+
116+
///<summary>The text on which the analysis should be performed</summary>
117+
public AnalyzeDescriptor Text(IEnumerable<string> text) => Assign(a => a.Text = text.ToArray());
118+
119+
///<summary>The name of the tokenizer to use for the analysis</summary>
120+
public AnalyzeDescriptor Tokenizer(string tokenizer) => Assign(a => a.Tokenizer = tokenizer);
121+
}
16122
}

src/Nest/Indices/Analyze/ElasticClient-Analyze.cs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,21 @@ public IAnalyzeResponse Analyze(Func<AnalyzeDescriptor, IAnalyzeRequest> selecto
3131
this.Analyze(selector?.Invoke(new AnalyzeDescriptor()));
3232

3333
/// <inheritdoc/>
34-
public IAnalyzeResponse Analyze(IAnalyzeRequest request) =>
34+
public IAnalyzeResponse Analyze(IAnalyzeRequest request) =>
3535
this.Dispatcher.Dispatch<IAnalyzeRequest, AnalyzeRequestParameters, AnalyzeResponse>(
3636
request,
37-
(p, d) => this.LowLevelDispatch.IndicesAnalyzeDispatch<AnalyzeResponse>(p, MoveTextFromQueryString(request))
37+
this.LowLevelDispatch.IndicesAnalyzeDispatch<AnalyzeResponse>
3838
);
3939

4040
/// <inheritdoc/>
4141
public Task<IAnalyzeResponse> AnalyzeAsync(Func<AnalyzeDescriptor, IAnalyzeRequest> selector) =>
4242
this.AnalyzeAsync(selector?.Invoke(new AnalyzeDescriptor()));
4343

4444
/// <inheritdoc/>
45-
public Task<IAnalyzeResponse> AnalyzeAsync(IAnalyzeRequest request) =>
45+
public Task<IAnalyzeResponse> AnalyzeAsync(IAnalyzeRequest request) =>
4646
this.Dispatcher.DispatchAsync<IAnalyzeRequest, AnalyzeRequestParameters, AnalyzeResponse, IAnalyzeResponse>(
4747
request,
48-
(p, d) => this.LowLevelDispatch.IndicesAnalyzeDispatchAsync<AnalyzeResponse>(p, MoveTextFromQueryString(request))
48+
this.LowLevelDispatch.IndicesAnalyzeDispatchAsync<AnalyzeResponse>
4949
);
50-
51-
private static string MoveTextFromQueryString(IAnalyzeRequest d)
52-
{
53-
IRequest<AnalyzeRequestParameters> request = d;
54-
var text = request.RequestParameters.GetQueryStringValue<string[]>("text");
55-
request.RequestParameters.RemoveQueryString("text");
56-
return string.Join(",", text);
57-
}
5850
}
59-
}
51+
}

src/Nest/_Generated/_Descriptors.generated.cs

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1625,37 +1625,9 @@ public AnalyzeDescriptor() : base(){}
16251625
public AnalyzeDescriptor Index<TOther>() where TOther : class => Assign(a=>a.RouteValues.Optional("index", (IndexName)typeof(TOther)));
16261626

16271627

1628-
///<summary>The name of the analyzer to use</summary>
1629-
public AnalyzeDescriptor Analyzer(string analyzer) => AssignParam(p=>p.Analyzer(analyzer));
1630-
1631-
///<summary>Deprecated : A comma-separated list of character filters to use for the analysis</summary>
1632-
public AnalyzeDescriptor CharFilters(params string[] char_filters) => AssignParam(p=>p.CharFilters(char_filters));
1633-
1634-
///<summary>A comma-separated list of character filters to use for the analysis</summary>
1635-
public AnalyzeDescriptor CharFilter(params string[] char_filter) => AssignParam(p=>p.CharFilter(char_filter));
1636-
1637-
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
1638-
public AnalyzeDescriptor Field(string field) => AssignParam(p=>p.Field(field));
1639-
1640-
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
1641-
public AnalyzeDescriptor Field<T>(Expression<Func<T, object>> field) where T : class =>
1642-
AssignParam(p=>p._Field(field));
1643-
1644-
///<summary>Deprecated : A comma-separated list of filters to use for the analysis</summary>
1645-
public AnalyzeDescriptor Filters(params string[] filters) => AssignParam(p=>p.Filters(filters));
1646-
1647-
///<summary>A comma-separated list of filters to use for the analysis</summary>
1648-
public AnalyzeDescriptor Filter(params string[] filter) => AssignParam(p=>p.Filter(filter));
1649-
16501628
///<summary>With `true`, specify that a local shard should be used if available, with `false`, use a random shard (default: true)</summary>
16511629
public AnalyzeDescriptor PreferLocal(bool prefer_local = true) => AssignParam(p=>p.PreferLocal(prefer_local));
16521630

1653-
///<summary>The text on which the analysis should be performed (when request body is not used)</summary>
1654-
public AnalyzeDescriptor Text(params string[] text) => AssignParam(p=>p.Text(text));
1655-
1656-
///<summary>The name of the tokenizer to use for the analysis</summary>
1657-
public AnalyzeDescriptor Tokenizer(string tokenizer) => AssignParam(p=>p.Tokenizer(tokenizer));
1658-
16591631
///<summary>With `true`, outputs more advanced details. (default: false)</summary>
16601632
public AnalyzeDescriptor Explain(bool explain = true) => AssignParam(p=>p.Explain(explain));
16611633

src/Nest/_Generated/_RequestParametersExtensions.Generated.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,6 @@ internal static SourceRequestParameters _SourceExclude<T>(this SourceRequestPara
5252
internal static SourceRequestParameters _SourceInclude<T>(this SourceRequestParameters qs, IEnumerable<Expression<Func<T, object>>> source_include) where T : class =>
5353
qs.AddQueryString("_source_include", source_include.Select(e=>(Field)e));
5454

55-
///<summary>Use the analyzer configured for this field (instead of passing the analyzer name)</summary>
56-
internal static AnalyzeRequestParameters _Field<T>(this AnalyzeRequestParameters qs, Expression<Func<T, object>> field) where T : class =>
57-
qs.AddQueryString("field", (Field)field);
58-
5955
///<summary>A comma-separated list of fields to clear when using the `field_data` parameter (default: all)</summary>
6056
internal static ClearCacheRequestParameters _Fields<T>(this ClearCacheRequestParameters qs, IEnumerable<Expression<Func<T, object>>> fields) where T : class =>
6157
qs.AddQueryString("fields", fields.Select(e=>(Field)e));

0 commit comments

Comments
 (0)