diff options
author | Wouter Tinus <win.acme.simple@gmail.com> | 2020-03-10 08:10:24 +0100 |
---|---|---|
committer | Wouter Tinus <win.acme.simple@gmail.com> | 2020-03-10 08:10:24 +0100 |
commit | 91a371d7b83d364d3c659a834d8e6cae4a3c6d6f (patch) | |
tree | 566377905083bb3f4ff79bba057b88a7863a0ddd /src | |
parent | 963a5ad1b398b989b2a41989dea82c4b4572606b (diff) | |
download | letsencrypt-win-simple-91a371d7b83d364d3c659a834d8e6cae4a3c6d6f.zip letsencrypt-win-simple-91a371d7b83d364d3c659a834d8e6cae4a3c6d6f.tar.gz letsencrypt-win-simple-91a371d7b83d364d3c659a834d8e6cae4a3c6d6f.tar.bz2 |
factor out order manager
Diffstat (limited to 'src')
-rw-r--r-- | src/main.lib/Clients/Acme/OrderManager.cs | 38 | ||||
-rw-r--r-- | src/main.lib/RenewalExecutor.cs | 17 |
2 files changed, 42 insertions, 13 deletions
diff --git a/src/main.lib/Clients/Acme/OrderManager.cs b/src/main.lib/Clients/Acme/OrderManager.cs new file mode 100644 index 0000000..2c9217f --- /dev/null +++ b/src/main.lib/Clients/Acme/OrderManager.cs @@ -0,0 +1,38 @@ +using ACMESharp.Protocol; +using PKISharp.WACS.Services; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace PKISharp.WACS.Clients.Acme +{ + class OrderManager + { + private readonly ILogService _log; + private readonly AcmeClient _client; + + public OrderManager(ILogService log, AcmeClient client) + { + _log = log; + _client = client; + } + + public async Task<OrderDetails?> GetOrCreate(IEnumerable<string> identifiers) + { + _log.Verbose("Creating certificate order for hosts: {identifiers}", identifiers); + var order = await _client.CreateOrder(identifiers); + // Check if the order is valid + if ((order.Payload.Status != AcmeClient.OrderReady && + order.Payload.Status != AcmeClient.OrderPending) || + order.Payload.Error != null) + { + _log.Error("Failed to create order {url}: {detail}", order.OrderUrl, order.Payload.Error.Detail); + return null; + } + else + { + _log.Verbose("Order {url} created", order.OrderUrl); + } + return order; + } + } +} diff --git a/src/main.lib/RenewalExecutor.cs b/src/main.lib/RenewalExecutor.cs index 94665dc..a38a6ba 100644 --- a/src/main.lib/RenewalExecutor.cs +++ b/src/main.lib/RenewalExecutor.cs @@ -97,25 +97,16 @@ namespace PKISharp.WACS } // Create the order - var client = es.Resolve<AcmeClient>(); + var orderManager = es.Resolve<OrderManager>(); var identifiers = target.GetHosts(false); - _log.Verbose("Creating certificate order for hosts: {identifiers}", identifiers); - var order = await client.CreateOrder(identifiers); - - // Check if the order is valid - if ((order.Payload.Status != AcmeClient.OrderReady && - order.Payload.Status != AcmeClient.OrderPending) || - order.Payload.Error != null) + var order = await orderManager.GetOrCreate(identifiers); + if (order == null) { - _log.Error("Failed to create order {url}: {detail}", order.OrderUrl, order.Payload.Error.Detail); return OnRenewFail(new Challenge() { Error = "Unable to create order" }); - } - else - { - _log.Verbose("Order {url} created", order.OrderUrl); } // Answer the challenges + var client = es.Resolve<AcmeClient>(); foreach (var authUrl in order.Payload.Authorizations) { // Get authorization details |