Skip to content

Commit cdb4828

Browse files
Hub: add per instance summary api
1 parent a9149e0 commit cdb4828

File tree

4 files changed

+129
-3
lines changed

4 files changed

+129
-3
lines changed

src/Certify.Server/Certify.Server.Hub.Api.Client/Certify.Server.Hub.Api.Client.cs

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1889,8 +1889,7 @@ public virtual async System.Threading.Tasks.Task<StatusSummary> GetManagedCertif
18891889
{
18901890
using (var request_ = new System.Net.Http.HttpRequestMessage())
18911891
{
1892-
request_.Content = new System.Net.Http.StringContent(string.Empty, System.Text.Encoding.UTF8, "application/json");
1893-
request_.Method = new System.Net.Http.HttpMethod("POST");
1892+
request_.Method = new System.Net.Http.HttpMethod("GET");
18941893
request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain"));
18951894

18961895
var urlBuilder_ = new System.Text.StringBuilder();
@@ -1950,6 +1949,95 @@ public virtual async System.Threading.Tasks.Task<StatusSummary> GetManagedCertif
19501949
}
19511950
}
19521951

1952+
/// <summary>
1953+
/// Retrieves the summary of a managed certificate for a specific instance using the provided instance ID.
1954+
/// </summary>
1955+
/// <returns>OK</returns>
1956+
/// <exception cref="ApiException">A server side error occurred.</exception>
1957+
public virtual System.Threading.Tasks.Task<StatusSummary> GetInstanceManagedCertificateSummaryAsync(string instanceId)
1958+
{
1959+
return GetInstanceManagedCertificateSummaryAsync(instanceId, System.Threading.CancellationToken.None);
1960+
}
1961+
1962+
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
1963+
/// <summary>
1964+
/// Retrieves the summary of a managed certificate for a specific instance using the provided instance ID.
1965+
/// </summary>
1966+
/// <returns>OK</returns>
1967+
/// <exception cref="ApiException">A server side error occurred.</exception>
1968+
public virtual async System.Threading.Tasks.Task<StatusSummary> GetInstanceManagedCertificateSummaryAsync(string instanceId, System.Threading.CancellationToken cancellationToken)
1969+
{
1970+
if (instanceId == null)
1971+
throw new System.ArgumentNullException("instanceId");
1972+
1973+
var client_ = _httpClient;
1974+
var disposeClient_ = false;
1975+
try
1976+
{
1977+
using (var request_ = new System.Net.Http.HttpRequestMessage())
1978+
{
1979+
request_.Method = new System.Net.Http.HttpMethod("GET");
1980+
request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain"));
1981+
1982+
var urlBuilder_ = new System.Text.StringBuilder();
1983+
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
1984+
// Operation Path: "api/v1/certificate/{instanceId}/summary"
1985+
urlBuilder_.Append("api/v1/certificate/");
1986+
urlBuilder_.Append(System.Uri.EscapeDataString(ConvertToString(instanceId, System.Globalization.CultureInfo.InvariantCulture)));
1987+
urlBuilder_.Append("/summary");
1988+
1989+
PrepareRequest(client_, request_, urlBuilder_);
1990+
1991+
var url_ = urlBuilder_.ToString();
1992+
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
1993+
1994+
PrepareRequest(client_, request_, url_);
1995+
1996+
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
1997+
var disposeResponse_ = true;
1998+
try
1999+
{
2000+
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
2001+
foreach (var item_ in response_.Headers)
2002+
headers_[item_.Key] = item_.Value;
2003+
if (response_.Content != null && response_.Content.Headers != null)
2004+
{
2005+
foreach (var item_ in response_.Content.Headers)
2006+
headers_[item_.Key] = item_.Value;
2007+
}
2008+
2009+
ProcessResponse(client_, response_);
2010+
2011+
var status_ = (int)response_.StatusCode;
2012+
if (status_ == 200)
2013+
{
2014+
var objectResponse_ = await ReadObjectResponseAsync<StatusSummary>(response_, headers_, cancellationToken).ConfigureAwait(false);
2015+
if (objectResponse_.Object == null)
2016+
{
2017+
throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
2018+
}
2019+
return objectResponse_.Object;
2020+
}
2021+
else
2022+
{
2023+
var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
2024+
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
2025+
}
2026+
}
2027+
finally
2028+
{
2029+
if (disposeResponse_)
2030+
response_.Dispose();
2031+
}
2032+
}
2033+
}
2034+
finally
2035+
{
2036+
if (disposeClient_)
2037+
client_.Dispose();
2038+
}
2039+
}
2040+
19532041
/// <summary>
19542042
/// Gets the full settings for a specific managed certificate
19552043
/// </summary>

src/Certify.Server/Certify.Server.Hub.Api/Controllers/v1/CertificateController.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public async Task<IActionResult> GetManagedCertificates(string? keyword, int? pa
223223
/// Get summary counts of all managed certs
224224
/// </summary>
225225
/// <returns></returns>
226-
[HttpPost]
226+
[HttpGet]
227227
[Route("summary")]
228228
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
229229
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(StatusSummary))]
@@ -233,6 +233,20 @@ public async Task<IActionResult> GetManagedCertificateSummary()
233233
return new OkObjectResult(summary);
234234
}
235235

236+
/// <summary>
237+
/// Retrieves the summary of a managed certificate for a specific instance using the provided instance ID.
238+
/// </summary>
239+
/// <returns>Returns an IActionResult containing the summary of the managed certificate.</returns>
240+
[HttpGet]
241+
[Route("{instanceId}/summary")]
242+
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
243+
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(StatusSummary))]
244+
public async Task<IActionResult> GetInstanceManagedCertificateSummary(string instanceId)
245+
{
246+
var summary = await _mgmtAPI.GetManagedCertificateSummary(instanceId, CurrentAuthContext);
247+
return new OkObjectResult(summary);
248+
}
249+
236250
/// <summary>
237251
/// Gets the full settings for a specific managed certificate
238252
/// </summary>

src/Certify.Server/Certify.Server.Hub.Api/Services/ManagementAPI.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,19 @@ public async Task<StatusSummary> GetManagedCertificateSummary(AuthContext? curre
278278
return await Task.FromResult(sum);
279279
}
280280

281+
/// <summary>
282+
/// Gets a summary of the statuses of all managed certificates.
283+
/// </summary>
284+
/// <param name="instanceId"></param>
285+
/// <param name="currentAuthContext">The current authentication context.</param>
286+
/// <returns>A <see cref="StatusSummary"/> summarizing certificate statuses.</returns>
287+
public async Task<StatusSummary?> GetManagedCertificateSummary(string instanceId, AuthContext? currentAuthContext)
288+
{
289+
var summary = _mgmtStateProvider.GetManagedInstanceStatusSummary(instanceId);
290+
291+
return await Task.FromResult(summary);
292+
}
293+
281294
/// <summary>
282295
/// Retrieves the certificate authorities from the target instance.
283296
/// </summary>

src/Certify.Server/Certify.Server.Hub.Api/SignalR/ManagementHub/InstanceManagementStateProvider.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public interface IInstanceManagementStateProvider
3939

4040
bool HasStatusSummaryForManagedInstance(string instanceId);
4141
ConcurrentDictionary<string, StatusSummary> GetManagedInstanceStatusSummaries();
42+
StatusSummary? GetManagedInstanceStatusSummary(string instanceId);
4243
void UpdateInstanceConnectionStatus(string instanceId, string status);
4344

4445
void AddOrUpdateSystemStatusItem(ActionStep status);
@@ -295,6 +296,16 @@ public ConcurrentDictionary<string, StatusSummary> GetManagedInstanceStatusSumma
295296
return _managedInstanceStatusSummary;
296297
}
297298

299+
/// <summary>
300+
/// Retrieves the status summary of a managed instance based on its identifier.
301+
/// </summary>
302+
/// <param name="instanceId">The identifier used to locate the specific managed instance's status summary.</param>
303+
/// <returns>Returns the status summary associated with the specified managed instance, or null if not found.</returns>
304+
public StatusSummary? GetManagedInstanceStatusSummary(string instanceId)
305+
{
306+
return _managedInstanceStatusSummary.FirstOrDefault(s => s.Key == instanceId).Value;
307+
}
308+
298309
/// <summary>
299310
/// Update a cached managed certificate item for a given instance
300311
/// </summary>

0 commit comments

Comments
 (0)