From de4da83708c4dfbdf985b1313ee9e26d3f321aa7 Mon Sep 17 00:00:00 2001 From: David Galey Date: Mon, 1 Jun 2026 02:24:13 -0400 Subject: [PATCH] Change incremental sync to use GetModifiedOrders API call --- CHANGELOG.md | 5 +- .../Client/GlobalSignApiClient.cs | 56 ++++++++++++++++++- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95948b2..47b52c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,4 +2,7 @@ v1.0 -Initial Release. 1.1 -Remove retry logic around reissue pickups \ No newline at end of file +Remove retry logic around reissue pickups + +1.1.1 +Change incremental sync to use GetModifiedOrders API call \ No newline at end of file diff --git a/globalsign-mssl-caplugin/Client/GlobalSignApiClient.cs b/globalsign-mssl-caplugin/Client/GlobalSignApiClient.cs index 8e3e6ad..f3e5036 100644 --- a/globalsign-mssl-caplugin/Client/GlobalSignApiClient.cs +++ b/globalsign-mssl-caplugin/Client/GlobalSignApiClient.cs @@ -1,5 +1,7 @@ using System.Globalization; using System.ServiceModel; +using System.Text; + using Keyfactor.AnyGateway.Extensions; using Keyfactor.Extensions.CAPlugin.GlobalSign.Api; using Keyfactor.Logging; @@ -86,7 +88,7 @@ public async Task> GetCertificatesForSyncAsync( var to = DateTime.UtcNow; results.AddRange( - await GetCertificatesByDateRange(from, to) + await GetModifiedOrdersByDateRange(from, to) ); } @@ -126,17 +128,65 @@ private async Task> GetCertificatesByDateRange(DateTime? fromD else { int errCode = int.Parse(allOrdersResponse.Response.QueryResponseHeader.Errors[0].ErrorCode); - Logger.LogError($"Unable to retrieve certificates:"); + StringBuilder sb = new StringBuilder(); + sb.Append($"Unable to retrieve certificates:"); foreach (var e in allOrdersResponse.Response.QueryResponseHeader.Errors) { - Logger.LogError($"{e.ErrorCode} | {e.ErrorField} | {e.ErrorMessage}"); + sb.Append($"\n{e.ErrorCode} | {e.ErrorField} | {e.ErrorMessage}"); } + Logger.LogError(sb.ToString()); var gsError = GlobalSignErrorIndex.GetGlobalSignError(errCode); Logger.LogError(gsError.DetailedMessage); throw new Exception(gsError.Message); } } + private async Task> GetModifiedOrdersByDateRange(DateTime? fromDate, DateTime? toDate) + { + var tmpFromDate = fromDate ?? DateTime.MinValue; + var tmpToDate = toDate ?? DateTime.UtcNow; + + QbV1GetModifiedOrdersRequest req = new QbV1GetModifiedOrdersRequest + { + QueryRequestHeader = new QueryRequestHeader + { + AuthToken = Config.GetQueryAuthToken() + }, + FromDate = tmpFromDate.ToString(Config.DateFormatString, DateTimeFormatInfo.InvariantInfo), + ToDate = tmpToDate.ToString(Config.DateFormatString, DateTimeFormatInfo.InvariantInfo), + OrderQueryOption = new OrderQueryOption + { + ReturnOrderOption = "true", + ReturnCertificateInfo = "true", + ReturnFulfillment = "true", + ReturnOriginalCSR = "true" + } + }; + Logger.LogDebug($"Retrieving all modified orders between {tmpFromDate} and {tmpToDate}"); + var modOrdersResponse = await QueryService.GetModifiedOrdersAsync(new GetModifiedOrders(req)); + + if (modOrdersResponse.Response.QueryResponseHeader.SuccessCode == 0) + { + var retVal = modOrdersResponse.Response.OrderDetails?.ToList() ?? new List(); + Logger.LogDebug($"Retrieved {retVal.Count} modified orders from GlobalSign"); + return retVal; + } + else + { + int errCode = int.Parse(modOrdersResponse.Response.QueryResponseHeader.Errors[0].ErrorCode); + StringBuilder sb = new StringBuilder(); + sb.Append("Unable to retrieve certificates:"); + foreach (var e in modOrdersResponse.Response.QueryResponseHeader.Errors) + { + sb.Append($"\n{e.ErrorCode} | {e.ErrorField} | {e.ErrorMessage}"); + } + Logger.LogError(sb.ToString()); + var gsError = GlobalSignErrorIndex.GetGlobalSignError(errCode); + Logger.LogError(gsError.DetailedMessage); + throw new Exception(gsError.Message); + } + } + public async Task PickupCertificateById(string caRequestId) { Logger.MethodEntry();