Skip to content

Commit 6fb0c10

Browse files
committed
Add support for security token API's
1 parent fa50dac commit 6fb0c10

22 files changed

+539
-103
lines changed

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7202,28 +7202,28 @@ public class GetRoleMappingRequestParameters : FluentRequestParameters<GetRoleMa
72027202
///https://www.elastic.co/guide/en/x-pack/master/security-api-tokens.html#security-api-get-token
72037203
///</pre>
72047204
///</summary>
7205-
public class XpackSecurityGetTokenRequestParameters : FluentRequestParameters<XpackSecurityGetTokenRequestParameters>
7205+
public class GetUserAccessTokenRequestParameters : FluentRequestParameters<GetUserAccessTokenRequestParameters>
72067206
{
72077207
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
72087208

72097209
///<summary>Pretty format the returned JSON response.</summary>
7210-
public XpackSecurityGetTokenRequestParameters Pretty(bool pretty) => this.AddQueryString("pretty", pretty);
7210+
public GetUserAccessTokenRequestParameters Pretty(bool pretty) => this.AddQueryString("pretty", pretty);
72117211

72127212

72137213
///<summary>Return human readable values for statistics.</summary>
7214-
public XpackSecurityGetTokenRequestParameters Human(bool human) => this.AddQueryString("human", human);
7214+
public GetUserAccessTokenRequestParameters Human(bool human) => this.AddQueryString("human", human);
72157215

72167216

72177217
///<summary>Include the stack trace of returned errors.</summary>
7218-
public XpackSecurityGetTokenRequestParameters ErrorTrace(bool error_trace) => this.AddQueryString("error_trace", error_trace);
7218+
public GetUserAccessTokenRequestParameters ErrorTrace(bool error_trace) => this.AddQueryString("error_trace", error_trace);
72197219

72207220

72217221
///<summary>The URL-encoded request definition. Useful for libraries that do not accept a request body for non-POST requests.</summary>
7222-
public XpackSecurityGetTokenRequestParameters Source(string source) => this.AddQueryString("source", source);
7222+
public GetUserAccessTokenRequestParameters Source(string source) => this.AddQueryString("source", source);
72237223

72247224

72257225
///<summary>A comma-separated list of filters used to reduce the respone.</summary>
7226-
public XpackSecurityGetTokenRequestParameters FilterPath(params string[] filter_path) => this.AddQueryString("filter_path", filter_path);
7226+
public GetUserAccessTokenRequestParameters FilterPath(params string[] filter_path) => this.AddQueryString("filter_path", filter_path);
72277227

72287228
}
72297229

@@ -7262,28 +7262,28 @@ public class GetUserRequestParameters : FluentRequestParameters<GetUserRequestPa
72627262
///https://www.elastic.co/guide/en/x-pack/master/security-api-tokens.html#security-api-invalidate-token
72637263
///</pre>
72647264
///</summary>
7265-
public class XpackSecurityInvalidateTokenRequestParameters : FluentRequestParameters<XpackSecurityInvalidateTokenRequestParameters>
7265+
public class InvalidateUserAccessTokenRequestParameters : FluentRequestParameters<InvalidateUserAccessTokenRequestParameters>
72667266
{
72677267
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
72687268

72697269
///<summary>Pretty format the returned JSON response.</summary>
7270-
public XpackSecurityInvalidateTokenRequestParameters Pretty(bool pretty) => this.AddQueryString("pretty", pretty);
7270+
public InvalidateUserAccessTokenRequestParameters Pretty(bool pretty) => this.AddQueryString("pretty", pretty);
72717271

72727272

72737273
///<summary>Return human readable values for statistics.</summary>
7274-
public XpackSecurityInvalidateTokenRequestParameters Human(bool human) => this.AddQueryString("human", human);
7274+
public InvalidateUserAccessTokenRequestParameters Human(bool human) => this.AddQueryString("human", human);
72757275

72767276

72777277
///<summary>Include the stack trace of returned errors.</summary>
7278-
public XpackSecurityInvalidateTokenRequestParameters ErrorTrace(bool error_trace) => this.AddQueryString("error_trace", error_trace);
7278+
public InvalidateUserAccessTokenRequestParameters ErrorTrace(bool error_trace) => this.AddQueryString("error_trace", error_trace);
72797279

72807280

72817281
///<summary>The URL-encoded request definition. Useful for libraries that do not accept a request body for non-POST requests.</summary>
7282-
public XpackSecurityInvalidateTokenRequestParameters Source(string source) => this.AddQueryString("source", source);
7282+
public InvalidateUserAccessTokenRequestParameters Source(string source) => this.AddQueryString("source", source);
72837283

72847284

72857285
///<summary>A comma-separated list of filters used to reduce the respone.</summary>
7286-
public XpackSecurityInvalidateTokenRequestParameters FilterPath(params string[] filter_path) => this.AddQueryString("filter_path", filter_path);
7286+
public InvalidateUserAccessTokenRequestParameters FilterPath(params string[] filter_path) => this.AddQueryString("filter_path", filter_path);
72877287

72887288
}
72897289

src/Elasticsearch.Net/ElasticLowLevelClient.Generated.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9306,7 +9306,7 @@ public ElasticsearchResponse<T> XpackSecurityGetRoleMapping<T>(Func<GetRoleMappi
93069306
///</summary>
93079307
///<param name="body">The token request to get</param>
93089308
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
9309-
public ElasticsearchResponse<T> XpackSecurityGetToken<T>(PostData<object> body, Func<XpackSecurityGetTokenRequestParameters, XpackSecurityGetTokenRequestParameters> requestParameters = null)
9309+
public ElasticsearchResponse<T> XpackSecurityGetToken<T>(PostData<object> body, Func<GetUserAccessTokenRequestParameters, GetUserAccessTokenRequestParameters> requestParameters = null)
93109310
where T : class => this.DoRequest<T>(POST, Url($"_xpack/security/oauth2/token"), body, _params(requestParameters));
93119311

93129312
///<summary>Represents a POST on /_xpack/security/oauth2/token
@@ -9320,7 +9320,7 @@ public ElasticsearchResponse<T> XpackSecurityGetToken<T>(PostData<object> body,
93209320
///</summary>
93219321
///<param name="body">The token request to get</param>
93229322
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
9323-
public Task<ElasticsearchResponse<T>> XpackSecurityGetTokenAsync<T>(PostData<object> body, Func<XpackSecurityGetTokenRequestParameters, XpackSecurityGetTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken))
9323+
public Task<ElasticsearchResponse<T>> XpackSecurityGetTokenAsync<T>(PostData<object> body, Func<GetUserAccessTokenRequestParameters, GetUserAccessTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken))
93249324
where T : class => this.DoRequestAsync<T>(POST, Url($"_xpack/security/oauth2/token"), cancellationToken, body, _params(requestParameters));
93259325

93269326
///<summary>Represents a GET on /_xpack/security/user/{username}
@@ -9388,7 +9388,7 @@ public ElasticsearchResponse<T> XpackSecurityGetUser<T>(Func<GetUserRequestParam
93889388
///</summary>
93899389
///<param name="body">The token to invalidate</param>
93909390
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
9391-
public ElasticsearchResponse<T> XpackSecurityInvalidateToken<T>(PostData<object> body, Func<XpackSecurityInvalidateTokenRequestParameters, XpackSecurityInvalidateTokenRequestParameters> requestParameters = null)
9391+
public ElasticsearchResponse<T> XpackSecurityInvalidateToken<T>(PostData<object> body, Func<InvalidateUserAccessTokenRequestParameters, InvalidateUserAccessTokenRequestParameters> requestParameters = null)
93929392
where T : class => this.DoRequest<T>(DELETE, Url($"_xpack/security/oauth2/token"), body, _params(requestParameters));
93939393

93949394
///<summary>Represents a DELETE on /_xpack/security/oauth2/token
@@ -9402,7 +9402,7 @@ public ElasticsearchResponse<T> XpackSecurityInvalidateToken<T>(PostData<object>
94029402
///</summary>
94039403
///<param name="body">The token to invalidate</param>
94049404
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
9405-
public Task<ElasticsearchResponse<T>> XpackSecurityInvalidateTokenAsync<T>(PostData<object> body, Func<XpackSecurityInvalidateTokenRequestParameters, XpackSecurityInvalidateTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken))
9405+
public Task<ElasticsearchResponse<T>> XpackSecurityInvalidateTokenAsync<T>(PostData<object> body, Func<InvalidateUserAccessTokenRequestParameters, InvalidateUserAccessTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken))
94069406
where T : class => this.DoRequestAsync<T>(DELETE, Url($"_xpack/security/oauth2/token"), cancellationToken, body, _params(requestParameters));
94079407

94089408
///<summary>Represents a PUT on /_xpack/security/role/{name}

src/Elasticsearch.Net/IElasticLowLevelClient.Generated.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8662,7 +8662,7 @@ public partial interface IElasticLowLevelClient
86628662
///</summary>
86638663
///<param name="body">The token request to get</param>
86648664
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
8665-
ElasticsearchResponse<T> XpackSecurityGetToken<T>(PostData<object> body, Func<XpackSecurityGetTokenRequestParameters, XpackSecurityGetTokenRequestParameters> requestParameters = null) where T : class;
8665+
ElasticsearchResponse<T> XpackSecurityGetToken<T>(PostData<object> body, Func<GetUserAccessTokenRequestParameters, GetUserAccessTokenRequestParameters> requestParameters = null) where T : class;
86668666

86678667
///<summary>Represents a POST on /_xpack/security/oauth2/token
86688668
///<para></para>Returns: A task of ElasticsearchResponse&lt;T&gt; where the behaviour depends on the type of T:
@@ -8675,7 +8675,7 @@ public partial interface IElasticLowLevelClient
86758675
///</summary>
86768676
///<param name="body">The token request to get</param>
86778677
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
8678-
Task<ElasticsearchResponse<T>> XpackSecurityGetTokenAsync<T>(PostData<object> body, Func<XpackSecurityGetTokenRequestParameters, XpackSecurityGetTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class;
8678+
Task<ElasticsearchResponse<T>> XpackSecurityGetTokenAsync<T>(PostData<object> body, Func<GetUserAccessTokenRequestParameters, GetUserAccessTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class;
86798679

86808680
///<summary>Represents a GET on /_xpack/security/user/{username}
86818681
///<para></para>Returns: ElasticsearchResponse&lt;T&gt; where the behavior depends on the type of T:
@@ -8738,7 +8738,7 @@ public partial interface IElasticLowLevelClient
87388738
///</summary>
87398739
///<param name="body">The token to invalidate</param>
87408740
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
8741-
ElasticsearchResponse<T> XpackSecurityInvalidateToken<T>(PostData<object> body, Func<XpackSecurityInvalidateTokenRequestParameters, XpackSecurityInvalidateTokenRequestParameters> requestParameters = null) where T : class;
8741+
ElasticsearchResponse<T> XpackSecurityInvalidateToken<T>(PostData<object> body, Func<InvalidateUserAccessTokenRequestParameters, InvalidateUserAccessTokenRequestParameters> requestParameters = null) where T : class;
87428742

87438743
///<summary>Represents a DELETE on /_xpack/security/oauth2/token
87448744
///<para></para>Returns: A task of ElasticsearchResponse&lt;T&gt; where the behaviour depends on the type of T:
@@ -8751,7 +8751,7 @@ public partial interface IElasticLowLevelClient
87518751
///</summary>
87528752
///<param name="body">The token to invalidate</param>
87538753
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
8754-
Task<ElasticsearchResponse<T>> XpackSecurityInvalidateTokenAsync<T>(PostData<object> body, Func<XpackSecurityInvalidateTokenRequestParameters, XpackSecurityInvalidateTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class;
8754+
Task<ElasticsearchResponse<T>> XpackSecurityInvalidateTokenAsync<T>(PostData<object> body, Func<InvalidateUserAccessTokenRequestParameters, InvalidateUserAccessTokenRequestParameters> requestParameters = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class;
87558755

87568756
///<summary>Represents a PUT on /_xpack/security/role/{name}
87578757
///<para></para>Returns: ElasticsearchResponse&lt;T&gt; where the behavior depends on the type of T:

src/Nest/XPack/Security/User/DisableUser/ElasticClient-DisableUser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public partial class ElasticClient
2424
{
2525
/// <inheritdoc/>
2626
public IDisableUserResponse DisableUser(Name username, Func<DisableUserDescriptor, IDisableUserRequest> selector = null) =>
27-
this.DisableUser(selector.InvokeOrDefault(new DisableUserDescriptor()));
27+
this.DisableUser(selector.InvokeOrDefault(new DisableUserDescriptor().Username(username)));
2828

2929
/// <inheritdoc/>
3030
public IDisableUserResponse DisableUser(IDisableUserRequest request) =>
@@ -35,7 +35,7 @@ public IDisableUserResponse DisableUser(IDisableUserRequest request) =>
3535

3636
/// <inheritdoc/>
3737
public Task<IDisableUserResponse> DisableUserAsync(Name username, Func<DisableUserDescriptor, IDisableUserRequest> selector = null, CancellationToken cancellationToken = default(CancellationToken)) =>
38-
this.DisableUserAsync(selector.InvokeOrDefault(new DisableUserDescriptor()), cancellationToken);
38+
this.DisableUserAsync(selector.InvokeOrDefault(new DisableUserDescriptor().Username(username)), cancellationToken);
3939

4040
/// <inheritdoc/>
4141
public Task<IDisableUserResponse> DisableUserAsync(IDisableUserRequest request, CancellationToken cancellationToken = default(CancellationToken)) =>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System.Runtime.Serialization;
2+
using Newtonsoft.Json;
3+
using Newtonsoft.Json.Converters;
4+
5+
namespace Nest
6+
{
7+
[JsonConverter(typeof(StringEnumConverter))]
8+
public enum AccessTokenGrantType
9+
{
10+
[EnumMember(Value = "password")] Password
11+
}
12+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Elasticsearch.Net;
4+
using System.Threading;
5+
6+
namespace Nest
7+
{
8+
public partial interface IElasticClient
9+
{
10+
/// <inheritdoc/>
11+
IGetUserAccessTokenResponse GetUserAccessToken(string username, string password, Func<GetUserAccessTokenDescriptor, IGetUserAccessTokenRequest> selector = null);
12+
13+
/// <inheritdoc/>
14+
IGetUserAccessTokenResponse GetUserAccessToken(IGetUserAccessTokenRequest request);
15+
16+
/// <inheritdoc/>
17+
Task<IGetUserAccessTokenResponse> GetUserAccessTokenAsync(string username, string password, Func<GetUserAccessTokenDescriptor, IGetUserAccessTokenRequest> selector = null, CancellationToken cancellationToken = default(CancellationToken));
18+
19+
/// <inheritdoc/>
20+
Task<IGetUserAccessTokenResponse> GetUserAccessTokenAsync(IGetUserAccessTokenRequest request, CancellationToken cancellationToken = default(CancellationToken));
21+
}
22+
23+
public partial class ElasticClient
24+
{
25+
/// <inheritdoc/>
26+
public IGetUserAccessTokenResponse GetUserAccessToken(string username, string password, Func<GetUserAccessTokenDescriptor, IGetUserAccessTokenRequest> selector = null) =>
27+
this.GetUserAccessToken(selector.InvokeOrDefault(new GetUserAccessTokenDescriptor(username, password)));
28+
29+
/// <inheritdoc/>
30+
public IGetUserAccessTokenResponse GetUserAccessToken(IGetUserAccessTokenRequest request) =>
31+
this.Dispatcher.Dispatch<IGetUserAccessTokenRequest, GetUserAccessTokenRequestParameters, GetUserAccessTokenResponse>(
32+
request,
33+
(p, d) =>this.LowLevelDispatch.XpackSecurityGetTokenDispatch<GetUserAccessTokenResponse>(p, d)
34+
);
35+
36+
/// <inheritdoc/>
37+
public Task<IGetUserAccessTokenResponse> GetUserAccessTokenAsync(string username, string password, Func<GetUserAccessTokenDescriptor, IGetUserAccessTokenRequest> selector = null, CancellationToken cancellationToken = default(CancellationToken)) =>
38+
this.GetUserAccessTokenAsync(selector.InvokeOrDefault(new GetUserAccessTokenDescriptor(username, password)), cancellationToken);
39+
40+
/// <inheritdoc/>
41+
public Task<IGetUserAccessTokenResponse> GetUserAccessTokenAsync(IGetUserAccessTokenRequest request, CancellationToken cancellationToken = default(CancellationToken)) =>
42+
this.Dispatcher.DispatchAsync<IGetUserAccessTokenRequest, GetUserAccessTokenRequestParameters, GetUserAccessTokenResponse, IGetUserAccessTokenResponse>(
43+
request,
44+
cancellationToken,
45+
(p, d, c) => this.LowLevelDispatch.XpackSecurityGetTokenDispatchAsync<GetUserAccessTokenResponse>(p, d, c)
46+
);
47+
}
48+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Newtonsoft.Json;
4+
5+
namespace Nest
6+
{
7+
public partial interface IGetUserAccessTokenRequest
8+
{
9+
[JsonProperty("username")]
10+
string Username { get; set; }
11+
[JsonProperty("password")]
12+
string Password { get; set; }
13+
[JsonProperty("scope")]
14+
string Scope { get; set; }
15+
[JsonProperty("grant_type")]
16+
AccessTokenGrantType GrantType { get; set; }
17+
}
18+
19+
public partial class GetUserAccessTokenRequest
20+
{
21+
[JsonProperty("username")]
22+
string IGetUserAccessTokenRequest.Username { get; set; }
23+
[JsonProperty("password")]
24+
string IGetUserAccessTokenRequest.Password { get; set; }
25+
26+
public GetUserAccessTokenRequest(string username, string password)
27+
{
28+
var self = (IGetUserAccessTokenRequest) this;
29+
self.Username = username;
30+
self.Password = password;
31+
}
32+
33+
public AccessTokenGrantType GrantType { get; set; } = AccessTokenGrantType.Password;
34+
35+
public string Scope { get; set; }
36+
}
37+
38+
[DescriptorFor("XpackSecurityGetToken")]
39+
public partial class GetUserAccessTokenDescriptor
40+
{
41+
AccessTokenGrantType IGetUserAccessTokenRequest.GrantType { get; set; } = AccessTokenGrantType.Password;
42+
string IGetUserAccessTokenRequest.Username { get; set; }
43+
string IGetUserAccessTokenRequest.Password { get; set; }
44+
string IGetUserAccessTokenRequest.Scope { get; set; }
45+
46+
public GetUserAccessTokenDescriptor(string username, string password)
47+
{
48+
var self = (IGetUserAccessTokenRequest) this;
49+
self.Username = username;
50+
self.Password = password;
51+
}
52+
53+
public GetUserAccessTokenDescriptor GrantType(AccessTokenGrantType type) => Assign(a=>a.GrantType = type);
54+
public GetUserAccessTokenDescriptor Scope(string scope) => Assign(a=>a.Scope = scope);
55+
}
56+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using Newtonsoft.Json;
5+
6+
namespace Nest
7+
{
8+
public interface IGetUserAccessTokenResponse : IResponse
9+
{
10+
[JsonProperty("access_token")]
11+
string AccessToken { get; set; }
12+
[JsonProperty("type")]
13+
string Type { get; set; }
14+
[JsonProperty("expires_in")]
15+
long ExpiresIn { get; set; }
16+
[JsonProperty("scope")]
17+
string Scope { get; set; }
18+
}
19+
20+
public class GetUserAccessTokenResponse : ResponseBase, IGetUserAccessTokenResponse
21+
{
22+
public string AccessToken { get; set; }
23+
public string Type { get; set; }
24+
public long ExpiresIn { get; set; }
25+
public string Scope { get; set; }
26+
}
27+
}

0 commit comments

Comments
 (0)