New API endpoint: Send email using store SMTP (#3181)

Co-authored-by: Kukks <evilkukka@gmail.com>
This commit is contained in:
Wouter Samaey
2022-03-11 10:17:40 +01:00
committed by GitHub
parent c15f182377
commit c36b0c16b0
6 changed files with 184 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ using System.Threading.Tasks;
using BTCPayServer.Abstractions.Contracts;
using BTCPayServer.Client;
using BTCPayServer.Client.Models;
using BTCPayServer.Controllers.GreenField;
using BTCPayServer.Data;
using BTCPayServer.Security.Greenfield;
using BTCPayServer.Services.Stores;
@@ -56,6 +57,7 @@ namespace BTCPayServer.Controllers.Greenfield
private readonly GreenfieldPullPaymentController _greenfieldPullPaymentController;
private readonly UIHomeController _homeController;
private readonly GreenfieldStorePaymentMethodsController _storePaymentMethodsController;
private readonly GreenfieldStoreEmailController _greenfieldStoreEmailController;
private readonly IServiceProvider _serviceProvider;
public BTCPayServerClientFactory(StoreRepository storeRepository,
@@ -79,6 +81,7 @@ namespace BTCPayServer.Controllers.Greenfield
GreenfieldPullPaymentController greenfieldPullPaymentController,
UIHomeController homeController,
GreenfieldStorePaymentMethodsController storePaymentMethodsController,
GreenfieldStoreEmailController greenfieldStoreEmailController,
IServiceProvider serviceProvider)
{
_storeRepository = storeRepository;
@@ -102,6 +105,7 @@ namespace BTCPayServer.Controllers.Greenfield
_greenfieldPullPaymentController = greenfieldPullPaymentController;
_homeController = homeController;
_storePaymentMethodsController = storePaymentMethodsController;
_greenfieldStoreEmailController = greenfieldStoreEmailController;
_serviceProvider = serviceProvider;
}
@@ -158,6 +162,7 @@ namespace BTCPayServer.Controllers.Greenfield
_greenfieldPullPaymentController,
_homeController,
_storePaymentMethodsController,
_greenfieldStoreEmailController,
new LocalHttpContextAccessor() { HttpContext = context }
);
}
@@ -188,6 +193,7 @@ namespace BTCPayServer.Controllers.Greenfield
private readonly GreenfieldPullPaymentController _greenfieldPullPaymentController;
private readonly UIHomeController _homeController;
private readonly GreenfieldStorePaymentMethodsController _storePaymentMethodsController;
private readonly GreenfieldStoreEmailController _greenfieldStoreEmailController;
public LocalBTCPayServerClient(
IServiceProvider serviceProvider,
@@ -209,6 +215,7 @@ namespace BTCPayServer.Controllers.Greenfield
GreenfieldPullPaymentController greenfieldPullPaymentController,
UIHomeController homeController,
GreenfieldStorePaymentMethodsController storePaymentMethodsController,
GreenfieldStoreEmailController greenfieldStoreEmailController,
IHttpContextAccessor httpContextAccessor) : base(new Uri("https://dummy.local"), "", "")
{
_chainPaymentMethodsController = chainPaymentMethodsController;
@@ -229,6 +236,7 @@ namespace BTCPayServer.Controllers.Greenfield
_greenfieldPullPaymentController = greenfieldPullPaymentController;
_homeController = homeController;
_storePaymentMethodsController = storePaymentMethodsController;
_greenfieldStoreEmailController = greenfieldStoreEmailController;
var controllers = new[]
{
@@ -236,7 +244,8 @@ namespace BTCPayServer.Controllers.Greenfield
paymentRequestController, apiKeysController, notificationsController, usersController,
storeLightningNetworkPaymentMethodsController, greenFieldInvoiceController, storeWebhooksController,
greenFieldServerInfoController, greenfieldPullPaymentController, storesController, homeController,
lightningNodeApiController, storeLightningNodeApiController as ControllerBase, storePaymentMethodsController
lightningNodeApiController, storeLightningNodeApiController as ControllerBase, storePaymentMethodsController,
greenfieldStoreEmailController
};
var authoverride = new DefaultAuthorizationService(
@@ -999,5 +1008,10 @@ namespace BTCPayServer.Controllers.Greenfield
ImportKeysToRPC = request.ImportKeysToRPC
}));
}
public override async Task SendEmail(string storeId, SendEmailRequest request, CancellationToken token = default)
{
HandleActionResult(await _greenfieldStoreEmailController.SendEmailFromStore(storeId, request));
}
}
}