Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/CodeGeneration/ApiGenerator/ApiGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ public class ApiGenerator
"xpack.ml.get_calendar_job.json",
"xpack.ml.delete_forecast.json",
"xpack.ml.find_file_structure.json",
"xpack.ssl.certificates.json",
"delete_by_query_rethrottle.json",
"update_by_query_rethrottle.json",

Expand Down
2 changes: 1 addition & 1 deletion src/CodeGeneration/ApiGenerator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ private static void Main(string[] args)
RestSpecDownloader.Download(downloadBranch);

ApiGenerator.Generate(downloadBranch, "Core", "Graph", "License", "Security", "Watcher", "Info", "MachineLearning", "Migration", "Sql",
"Rollup");
"Rollup", "Ssl");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2624,6 +2624,11 @@ public partial class TranslateSqlRequestParameters : RequestParameters<Translate
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
}
///<summary>Request options for XpackSslCertificates<pre>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</pre></summary>
public partial class GetCertificatesRequestParameters : RequestParameters<GetCertificatesRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
}
///<summary>Request options for XpackWatcherAckWatch<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html</pre></summary>
public partial class AcknowledgeWatchRequestParameters : RequestParameters<AcknowledgeWatchRequestParameters>
{
Expand Down
8 changes: 8 additions & 0 deletions src/Elasticsearch.Net/ElasticLowLevelClient.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4002,6 +4002,14 @@ public TResponse XpackSqlTranslateGet<TResponse>(TranslateSqlRequestParameters r
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> XpackSqlTranslateGetAsync<TResponse>(TranslateSqlRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_xpack/sql/translate"), ctx, null, _params(requestParameters));
///<summary>GET on /_xpack/ssl/certificates <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse XpackSslCertificates<TResponse>(GetCertificatesRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"_xpack/ssl/certificates"), null, _params(requestParameters));
///<summary>GET on /_xpack/ssl/certificates <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> XpackSslCertificatesAsync<TResponse>(GetCertificatesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_xpack/ssl/certificates"), ctx, null, _params(requestParameters));
///<summary>PUT on /_xpack/watcher/watch/{watch_id}/_ack <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html</para></summary>
///<param name="watch_id">Watch ID</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Expand Down
6 changes: 6 additions & 0 deletions src/Elasticsearch.Net/IElasticLowLevelClient.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3242,6 +3242,12 @@ public partial interface IElasticLowLevelClient
///<summary>GET on /_xpack/sql/translate <para>Translate SQL into Elasticsearch queries</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Task<TResponse> XpackSqlTranslateGetAsync<TResponse>(TranslateSqlRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken)) where TResponse : class, IElasticsearchResponse, new();
///<summary>GET on /_xpack/ssl/certificates <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
TResponse XpackSslCertificates<TResponse>(GetCertificatesRequestParameters requestParameters = null) where TResponse : class, IElasticsearchResponse, new();
///<summary>GET on /_xpack/ssl/certificates <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Task<TResponse> XpackSslCertificatesAsync<TResponse>(GetCertificatesRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken)) where TResponse : class, IElasticsearchResponse, new();
///<summary>PUT on /_xpack/watcher/watch/{watch_id}/_ack <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html</para></summary>
///<param name="watch_id">Watch ID</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
using System;
using System.Collections;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Elasticsearch.Net;

namespace Nest
{
public partial interface IElasticClient
{
/// <summary>
/// The certificates API enables you to retrieve information about the X.509 certificates
/// that are used to encrypt communications in your Elasticsearch cluster.
/// </summary>
IGetCertificatesResponse GetCertificates(Func<GetCertificatesDescriptor, IGetCertificatesRequest> selector = null);

/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
IGetCertificatesResponse GetCertificates(IGetCertificatesRequest request);

/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
Task<IGetCertificatesResponse> GetCertificatesAsync(Func<GetCertificatesDescriptor, IGetCertificatesRequest> selector = null,
CancellationToken cancellationToken = default
);

/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
Task<IGetCertificatesResponse> GetCertificatesAsync(IGetCertificatesRequest request,
CancellationToken cancellationToken = default
);
}

public partial class ElasticClient
{
/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
public IGetCertificatesResponse GetCertificates(Func<GetCertificatesDescriptor, IGetCertificatesRequest> selector = null) =>
GetCertificates(selector.InvokeOrDefault(new GetCertificatesDescriptor()));

/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
public IGetCertificatesResponse GetCertificates(IGetCertificatesRequest request) =>
Dispatcher.Dispatch<IGetCertificatesRequest, GetCertificatesRequestParameters, GetCertificatesResponse>(
request,
ToCertificatesResponse,
(p, d) => LowLevelDispatch.XpackSslCertificatesDispatch<GetCertificatesResponse>(p)
);

/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
public Task<IGetCertificatesResponse> GetCertificatesAsync(Func<GetCertificatesDescriptor, IGetCertificatesRequest> selector = null,
CancellationToken cancellationToken = default
) =>
GetCertificatesAsync(selector.InvokeOrDefault(new GetCertificatesDescriptor()), cancellationToken);

/// <inheritdoc cref="GetCertificates(System.Func{Nest.GetCertificatesDescriptor,Nest.IGetCertificatesRequest})" />
public Task<IGetCertificatesResponse> GetCertificatesAsync(IGetCertificatesRequest request,
CancellationToken cancellationToken = default
) =>
Dispatcher
.DispatchAsync<IGetCertificatesRequest, GetCertificatesRequestParameters, GetCertificatesResponse,
IGetCertificatesResponse>(
request,
cancellationToken,
ToCertificatesResponse,
(p, d, c) => LowLevelDispatch.XpackSslCertificatesDispatchAsync<GetCertificatesResponse>(p, c)
);

private GetCertificatesResponse ToCertificatesResponse(IApiCallDetails apiCallDetails, Stream stream)
{
var result = RequestResponseSerializer.Deserialize<ClusterCertificateInformation[]>(stream);
return new GetCertificatesResponse { Certificates = result };
}
}
}
11 changes: 11 additions & 0 deletions src/Nest/XPack/Ssl/GetCertificates/GetCertificatesRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Newtonsoft.Json;

namespace Nest
{
[MapsApi("xpack.ssl.certificates.json")]
public partial interface IGetCertificatesRequest { }

public partial class GetCertificatesRequest { }

public partial class GetCertificatesDescriptor { }
}
44 changes: 44 additions & 0 deletions src/Nest/XPack/Ssl/GetCertificates/GetCertificatesResponse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;

namespace Nest
{
public interface IGetCertificatesResponse : IResponse
{
[JsonIgnore]
IReadOnlyCollection<ClusterCertificateInformation> Certificates { get; }

}

public class GetCertificatesResponse : ResponseBase, IGetCertificatesResponse
{
public IReadOnlyCollection<ClusterCertificateInformation> Certificates { get; internal set; } =
EmptyReadOnly<ClusterCertificateInformation>.Collection;
}

public class ClusterCertificateInformation
{

[JsonProperty("path")]
public string Path { get; internal set; }

[JsonProperty("alias")]
public string Alias { get; internal set; }

[JsonProperty("format")]
public string Format { get; internal set; }

[JsonProperty("subject_dn")]
public string SubjectDomainName { get; internal set; }

[JsonProperty("serial_number")]
public string SerialNumber { get; internal set; }

[JsonProperty("has_private_key")]
public bool HasPrivateKey { get; internal set; }

[JsonProperty("expiry")]
public DateTimeOffset Expiry { get; internal set; }
}
}
8 changes: 8 additions & 0 deletions src/Nest/_Generated/_Descriptors.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4746,6 +4746,14 @@ public partial class TranslateSqlDescriptor : RequestDescriptorBase<TranslateSq

// Request parameters

}
///<summary>descriptor for XpackSslCertificates <pre>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</pre></summary>
public partial class GetCertificatesDescriptor : RequestDescriptorBase<GetCertificatesDescriptor,GetCertificatesRequestParameters, IGetCertificatesRequest>, IGetCertificatesRequest
{
// values part of the url path

// Request parameters

}
///<summary>descriptor for XpackWatcherAckWatch <pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-ack-watch.html</pre></summary>
public partial class AcknowledgeWatchDescriptor : RequestDescriptorBase<AcknowledgeWatchDescriptor,AcknowledgeWatchRequestParameters, IAcknowledgeWatchRequest>, IAcknowledgeWatchRequest
Expand Down
20 changes: 20 additions & 0 deletions src/Nest/_Generated/_LowLevelDispatch.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4474,6 +4474,26 @@ internal partial class LowLevelDispatch
throw InvalidDispatch("XpackSqlTranslate", p, new [] { POST, GET }, "/_xpack/sql/translate");
}

internal TResponse XpackSslCertificatesDispatch<TResponse>(IRequest<GetCertificatesRequestParameters> p) where TResponse : class, IElasticsearchResponse, new()
{
switch(p.HttpMethod)
{
case GET:
return _lowLevel.XpackSslCertificates<TResponse>(p.RequestParameters);
}
throw InvalidDispatch("XpackSslCertificates", p, new [] { GET }, "/_xpack/ssl/certificates");
}

internal Task<TResponse> XpackSslCertificatesDispatchAsync<TResponse>(IRequest<GetCertificatesRequestParameters> p, CancellationToken ct) where TResponse : class, IElasticsearchResponse, new()
{
switch(p.HttpMethod)
{
case GET:
return _lowLevel.XpackSslCertificatesAsync<TResponse>(p.RequestParameters,ct);
}
throw InvalidDispatch("XpackSslCertificates", p, new [] { GET }, "/_xpack/ssl/certificates");
}

internal TResponse XpackWatcherAckWatchDispatch<TResponse>(IRequest<AcknowledgeWatchRequestParameters> p) where TResponse : class, IElasticsearchResponse, new()
{
switch(p.HttpMethod)
Expand Down
12 changes: 12 additions & 0 deletions src/Nest/_Generated/_Requests.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2633,6 +2633,18 @@ public GetCategoriesRequest(Id job_id) : base(r=>r.Required("job_id", job_id)){}
// Request parameters
}
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public partial interface IGetCertificatesRequest : IRequest<GetCertificatesRequestParameters>
{
}
///<summary>Request parameters for XpackSslCertificates <pre>https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-ssl.html</pre></summary>
public partial class GetCertificatesRequest : PlainRequestBase<GetCertificatesRequestParameters>, IGetCertificatesRequest
{
protected IGetCertificatesRequest Self => this;
// values part of the url path

// Request parameters
}
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public partial interface IGetDatafeedsRequest : IRequest<GetDatafeedsRequestParameters>
{
Id DatafeedId { get; }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using System;
using Elastic.Xunit.XunitPlumbing;
using Elasticsearch.Net;
using FluentAssertions;
using Nest;
using Tests.Core.ManagedElasticsearch.Clusters;
using Tests.Framework;
using Tests.Framework.Integration;

namespace Tests.XPack.Ssl.GetCertificates
{
[SkipVersion("<6.5.0", "")]
public class GetCertificatesApiTests
: ApiIntegrationTestBase<XPackCluster, IGetCertificatesResponse, IGetCertificatesRequest, GetCertificatesDescriptor, GetCertificatesRequest>
{
public GetCertificatesApiTests(XPackCluster cluster, EndpointUsage usage) : base(cluster, usage) { }

protected override bool ExpectIsValid => true;
protected override int ExpectStatusCode => 200;
protected override HttpMethod HttpMethod => HttpMethod.GET;

protected override GetCertificatesRequest Initializer => new GetCertificatesRequest();

protected override string UrlPath => $"/_xpack/ssl/certificates";

protected override LazyResponses ClientUsage() => Calls(
(client, f) => client.GetCertificates(f),
(client, f) => client.GetCertificatesAsync(f),
(client, r) => client.GetCertificates(r),
(client, r) => client.GetCertificatesAsync(r)
);

protected override void ExpectResponse(IGetCertificatesResponse response)
{
response.Certificates.Should().NotBeEmpty();
foreach (var c in response.Certificates)
{
c.Path.Should().NotBeNullOrWhiteSpace();
c.Format.Should().NotBeNullOrWhiteSpace();
c.SubjectDomainName.Should().NotBeNullOrWhiteSpace();
c.SerialNumber.Should().NotBeNullOrWhiteSpace();
c.Expiry.Should().BeAfter(DateTime.UtcNow.AddYears(-2));
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System.Threading.Tasks;
using Elastic.Xunit.XunitPlumbing;
using Nest;
using Tests.Framework;

namespace Tests.XPack.Ssl.GetCertificates
{
public class GetCertificatesUrlTests : UrlTestsBase
{
[U] public override async Task Urls() => await UrlTester.GET("/_xpack/ssl/certificates")
.Fluent(c => c.GetCertificates())
.Request(c => c.GetCertificates(new GetCertificatesRequest()))
.FluentAsync(c => c.GetCertificatesAsync())
.RequestAsync(c => c.GetCertificatesAsync(new GetCertificatesRequest()));
}
}