11using System ;
2- using System . Collections . Concurrent ;
32using System . Net ;
43using System . Net . Http ;
54using System . Net . Http . Headers ;
65using System . Text ;
7- using System . Threading ;
86using System . Threading . Tasks ;
97using CAProxy . AnyGateway . Interfaces ;
108using CSS . Common . Logging ;
119using Keyfactor . AnyGateway . CscGlobal . Client . Models ;
12- using Keyfactor . AnyGateway . CscGlobal . Exceptions ;
1310using Keyfactor . AnyGateway . CscGlobal . Interfaces ;
1411using Newtonsoft . Json ;
1512
@@ -30,7 +27,6 @@ public CscGlobalClient(ICAConnectorConfigProvider config)
3027
3128 private Uri BaseUrl { get ; }
3229 private HttpClient RestClient { get ; }
33- private int PageSize { get ; } = 100 ;
3430 private string ApiKey { get ; }
3531 private string Authorization { get ; }
3632
@@ -41,7 +37,7 @@ public async Task<RegistrationResponse> SubmitRegistrationAsync(
4137 JsonConvert . SerializeObject ( registerRequest ) , Encoding . ASCII , "application/json" ) ) )
4238 {
4339 Logger . Trace ( JsonConvert . SerializeObject ( registerRequest ) ) ;
44- var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
40+ var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
4541 if ( resp . StatusCode == HttpStatusCode . BadRequest ) //Csc Sends Errors back in 400 Json Response
4642 {
4743 var errorResponse =
@@ -68,7 +64,7 @@ public async Task<RenewalResponse> SubmitRenewalAsync(
6864 {
6965 Logger . Trace ( JsonConvert . SerializeObject ( renewalRequest ) ) ;
7066
71- var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
67+ var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
7268 if ( resp . StatusCode == HttpStatusCode . BadRequest ) //Csc Sends Errors back in 400 Json Response
7369 {
7470 var errorResponse =
@@ -94,7 +90,7 @@ public async Task<ReissueResponse> SubmitReissueAsync(
9490 {
9591 Logger . Trace ( JsonConvert . SerializeObject ( reissueRequest ) ) ;
9692
97- var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
93+ var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
9894 if ( resp . StatusCode == HttpStatusCode . BadRequest ) //Csc Sends Errors back in 400 Json Response
9995 {
10096 var errorResponse =
@@ -127,7 +123,7 @@ public async Task<RevokeResponse> SubmitRevokeCertificateAsync(string uuId)
127123 {
128124 using ( var resp = await RestClient . PutAsync ( $ "/dbs/api/v2/tls/revoke/{ uuId } ", new StringContent ( "" ) ) )
129125 {
130- var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
126+ var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling . Ignore } ;
131127 if ( resp . StatusCode == HttpStatusCode . BadRequest ) //Csc Sends Errors back in 400 Json Response
132128 {
133129 var errorResponse =
@@ -145,92 +141,27 @@ public async Task<RevokeResponse> SubmitRevokeCertificateAsync(string uuId)
145141 }
146142 }
147143
148- public async Task SubmitCertificateListRequestAsync ( BlockingCollection < ICertificateResponse > bc ,
149- CancellationToken ct )
144+ public async Task < CertificateListResponse > SubmitCertificateListRequestAsync ( )
150145 {
151146 Logger . MethodEntry ( ILogExtensions . MethodLogLevel . Debug ) ;
152- try
153- {
154- var itemsProcessed = 0 ;
155- var isComplete = false ;
156- var retryCount = 0 ;
157- do
158- {
159- var batchItemsProcessed = 0 ;
160- using ( var resp = await RestClient . GetAsync ( "/dbs/api/v2/tls/certificate?filter=status=in=(ACTIVE,REVOKED)" , ct ) )
161- {
162- if ( ! resp . IsSuccessStatusCode )
163- {
164- var responseMessage = resp . Content . ReadAsStringAsync ( ) . Result ;
165- Logger . Error (
166- $ "Failed Request to Keyfactor. Retrying request. Status Code { resp . StatusCode } | Message: { responseMessage } ") ;
167- retryCount ++ ;
168- if ( retryCount > 5 )
169- throw new RetryCountExceededException (
170- $ "5 consecutive failures to { resp . RequestMessage . RequestUri } ") ;
171-
172- continue ;
173- }
174-
175- var stringResponse = await resp . Content . ReadAsStringAsync ( ) ;
176-
177- var batchResponse =
178- JsonConvert . DeserializeObject < CertificateListResponse > ( stringResponse ) ;
179-
180- var batchCount = batchResponse . Results . Count ;
181-
182- Logger . Trace ( $ "Processing { batchCount } items in batch") ;
183- do
184- {
185- var r = batchResponse . Results [ batchItemsProcessed ] ;
186- if ( bc . TryAdd ( r , 10 , ct ) )
187- {
188- Logger . Trace ( $ "Added Template ID { r . Uuid } to Queue for processing") ;
189- batchItemsProcessed ++ ;
190- itemsProcessed ++ ;
191- Logger . Trace ( $ "Processed { batchItemsProcessed } of { batchCount } ") ;
192- Logger . Trace ( $ "Total Items Processed: { itemsProcessed } ") ;
193- }
194- else
195- {
196- Logger . Trace ( $ "Adding { r } blocked. Retry") ;
197- }
198- } while ( batchItemsProcessed < batchCount ) ; //batch loop
199- }
200-
201- //assume that if we process less records than requested that we have reached the end of the certificate list
202- if ( batchItemsProcessed < PageSize )
203- isComplete = true ;
204- } while ( ! isComplete ) ; //page loop
205-
206- bc . CompleteAdding ( ) ;
207- }
208- catch ( OperationCanceledException cancelEx )
209- {
210- Logger . Warn ( $ "Synchronize method was cancelled. Message: { cancelEx . Message } ") ;
211- bc . CompleteAdding ( ) ;
212- Logger . MethodExit ( ILogExtensions . MethodLogLevel . Debug ) ;
213- // ReSharper disable once PossibleIntendedRethrow
214- throw cancelEx ;
215- }
216- catch ( RetryCountExceededException retryEx )
217- {
218- Logger . Error ( $ "Retries Failed: { retryEx . Message } ") ;
219- Logger . MethodExit ( ILogExtensions . MethodLogLevel . Debug ) ;
220- }
221- catch ( HttpRequestException ex )
147+ var resp = RestClient . GetAsync ( "/dbs/api/v2/tls/certificate?filter=status=in=(ACTIVE,REVOKED)" ) . Result ;
148+
149+ if ( ! resp . IsSuccessStatusCode )
222150 {
223- Logger . Error ( $ "HttpRequest Failed: { ex . Message } ") ;
224- Logger . MethodExit ( ILogExtensions . MethodLogLevel . Debug ) ;
151+ var responseMessage = resp . Content . ReadAsStringAsync ( ) . Result ;
152+ Logger . Error (
153+ $ "Failed Request to Keyfactor. Retrying request. Status Code { resp . StatusCode } | Message: { responseMessage } ") ;
225154 }
226155
227- Logger . MethodExit ( ILogExtensions . MethodLogLevel . Debug ) ;
156+ var certificateListResponse =
157+ JsonConvert . DeserializeObject < CertificateListResponse > ( await resp . Content . ReadAsStringAsync ( ) ) ;
158+ return certificateListResponse ;
228159 }
229160
230161 private HttpClient ConfigureRestClient ( )
231162 {
232163 var clientHandler = new WebRequestHandler ( ) ;
233- var returnClient = new HttpClient ( clientHandler , true ) { BaseAddress = BaseUrl } ;
164+ var returnClient = new HttpClient ( clientHandler , true ) { BaseAddress = BaseUrl } ;
234165 returnClient . DefaultRequestHeaders . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "application/json" ) ) ;
235166 returnClient . DefaultRequestHeaders . Add ( "Authorization" , "Bearer " + Authorization ) ;
236167 returnClient . DefaultRequestHeaders . Add ( "apikey" , ApiKey ) ;
0 commit comments