summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWouter Tinus <win.acme.simple@gmail.com>2020-03-10 08:10:24 +0100
committerWouter Tinus <win.acme.simple@gmail.com>2020-03-10 08:10:24 +0100
commit91a371d7b83d364d3c659a834d8e6cae4a3c6d6f (patch)
tree566377905083bb3f4ff79bba057b88a7863a0ddd /src
parent963a5ad1b398b989b2a41989dea82c4b4572606b (diff)
downloadletsencrypt-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.cs38
-rw-r--r--src/main.lib/RenewalExecutor.cs17
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