make IsAvailable async

This commit is contained in:
nicolas.dorier
2018-02-23 16:09:15 +09:00
parent 82d38da18e
commit 3d33ecf397
3 changed files with 24 additions and 13 deletions

View File

@@ -83,12 +83,23 @@ namespace BTCPayServer.Controllers
.Select(c =>
(Handler: (IPaymentMethodHandler)_ServiceProvider.GetService(typeof(IPaymentMethodHandler<>).MakeGenericType(c.GetType())),
SupportedPaymentMethod: c,
Network: _NetworkProvider.GetNetwork(c.PaymentId.CryptoCode)))
.Where(c =>
c.Network != null &&
c.Handler.IsAvailable(c.SupportedPaymentMethod, c.Network))
.ToArray();
if (supportedPaymentMethods.Length == 0)
Network: _NetworkProvider.GetNetwork(c.PaymentId.CryptoCode),
IsAvailable: Task.FromResult(false)))
.Where(c => c.Network != null)
.Select(c =>
{
c.IsAvailable = c.Handler.IsAvailable(c.SupportedPaymentMethod, c.Network);
return c;
})
.ToList();
foreach(var supportedPaymentMethod in supportedPaymentMethods.ToList())
{
if(!await supportedPaymentMethod.IsAvailable)
{
supportedPaymentMethods.Remove(supportedPaymentMethod);
}
}
if (supportedPaymentMethods.Count == 0)
throw new BitpayHttpException(400, "No derivation strategy are available now for this store");
var entity = new InvoiceEntity
{