|
1 | 1 | using System.Globalization; |
2 | 2 | using System.ServiceModel; |
| 3 | +using System.Text; |
| 4 | + |
3 | 5 | using Keyfactor.AnyGateway.Extensions; |
4 | 6 | using Keyfactor.Extensions.CAPlugin.GlobalSign.Api; |
5 | 7 | using Keyfactor.Logging; |
@@ -86,7 +88,7 @@ public async Task<List<OrderDetail>> GetCertificatesForSyncAsync( |
86 | 88 | var to = DateTime.UtcNow; |
87 | 89 |
|
88 | 90 | results.AddRange( |
89 | | - await GetCertificatesByDateRange(from, to) |
| 91 | + await GetModifiedOrdersByDateRange(from, to) |
90 | 92 | ); |
91 | 93 | } |
92 | 94 |
|
@@ -126,17 +128,65 @@ private async Task<List<OrderDetail>> GetCertificatesByDateRange(DateTime? fromD |
126 | 128 | else |
127 | 129 | { |
128 | 130 | int errCode = int.Parse(allOrdersResponse.Response.QueryResponseHeader.Errors[0].ErrorCode); |
129 | | - Logger.LogError($"Unable to retrieve certificates:"); |
| 131 | + StringBuilder sb = new StringBuilder(); |
| 132 | + sb.Append($"Unable to retrieve certificates:"); |
130 | 133 | foreach (var e in allOrdersResponse.Response.QueryResponseHeader.Errors) |
131 | 134 | { |
132 | | - Logger.LogError($"{e.ErrorCode} | {e.ErrorField} | {e.ErrorMessage}"); |
| 135 | + sb.Append($"\n{e.ErrorCode} | {e.ErrorField} | {e.ErrorMessage}"); |
133 | 136 | } |
| 137 | + Logger.LogError(sb.ToString()); |
134 | 138 | var gsError = GlobalSignErrorIndex.GetGlobalSignError(errCode); |
135 | 139 | Logger.LogError(gsError.DetailedMessage); |
136 | 140 | throw new Exception(gsError.Message); |
137 | 141 | } |
138 | 142 | } |
139 | 143 |
|
| 144 | + private async Task<List<OrderDetail>> GetModifiedOrdersByDateRange(DateTime? fromDate, DateTime? toDate) |
| 145 | + { |
| 146 | + var tmpFromDate = fromDate ?? DateTime.MinValue; |
| 147 | + var tmpToDate = toDate ?? DateTime.UtcNow; |
| 148 | + |
| 149 | + QbV1GetModifiedOrdersRequest req = new QbV1GetModifiedOrdersRequest |
| 150 | + { |
| 151 | + QueryRequestHeader = new QueryRequestHeader |
| 152 | + { |
| 153 | + AuthToken = Config.GetQueryAuthToken() |
| 154 | + }, |
| 155 | + FromDate = tmpFromDate.ToString(Config.DateFormatString, DateTimeFormatInfo.InvariantInfo), |
| 156 | + ToDate = tmpToDate.ToString(Config.DateFormatString, DateTimeFormatInfo.InvariantInfo), |
| 157 | + OrderQueryOption = new OrderQueryOption |
| 158 | + { |
| 159 | + ReturnOrderOption = "true", |
| 160 | + ReturnCertificateInfo = "true", |
| 161 | + ReturnFulfillment = "true", |
| 162 | + ReturnOriginalCSR = "true" |
| 163 | + } |
| 164 | + }; |
| 165 | + Logger.LogDebug($"Retrieving all modified orders between {tmpFromDate} and {tmpToDate}"); |
| 166 | + var modOrdersResponse = await QueryService.GetModifiedOrdersAsync(new GetModifiedOrders(req)); |
| 167 | + |
| 168 | + if (modOrdersResponse.Response.QueryResponseHeader.SuccessCode == 0) |
| 169 | + { |
| 170 | + var retVal = modOrdersResponse.Response.OrderDetails?.ToList() ?? new List<OrderDetail>(); |
| 171 | + Logger.LogDebug($"Retrieved {retVal.Count} modified orders from GlobalSign"); |
| 172 | + return retVal; |
| 173 | + } |
| 174 | + else |
| 175 | + { |
| 176 | + int errCode = int.Parse(modOrdersResponse.Response.QueryResponseHeader.Errors[0].ErrorCode); |
| 177 | + StringBuilder sb = new StringBuilder(); |
| 178 | + sb.Append("Unable to retrieve certificates:"); |
| 179 | + foreach (var e in modOrdersResponse.Response.QueryResponseHeader.Errors) |
| 180 | + { |
| 181 | + sb.Append($"\n{e.ErrorCode} | {e.ErrorField} | {e.ErrorMessage}"); |
| 182 | + } |
| 183 | + Logger.LogError(sb.ToString()); |
| 184 | + var gsError = GlobalSignErrorIndex.GetGlobalSignError(errCode); |
| 185 | + Logger.LogError(gsError.DetailedMessage); |
| 186 | + throw new Exception(gsError.Message); |
| 187 | + } |
| 188 | + } |
| 189 | + |
140 | 190 | public async Task<AnyCAPluginCertificate> PickupCertificateById(string caRequestId) |
141 | 191 | { |
142 | 192 | Logger.MethodEntry(); |
|
0 commit comments