2023-05-09 13:56:57 +00:00
|
|
|
|
using VoidCat.Database;
|
2022-09-07 14:52:40 +00:00
|
|
|
|
using VoidCat.Services.Abstractions;
|
|
|
|
|
|
|
|
|
|
namespace VoidCat.Services.Payment;
|
|
|
|
|
|
|
|
|
|
public class PaymentFactory : IPaymentFactory
|
|
|
|
|
{
|
|
|
|
|
private readonly IServiceProvider _services;
|
|
|
|
|
|
|
|
|
|
public PaymentFactory(IServiceProvider services)
|
|
|
|
|
{
|
|
|
|
|
_services = services;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-09 13:56:57 +00:00
|
|
|
|
public ValueTask<IPaymentProvider> CreateProvider(PaywallService svc)
|
2022-09-07 14:52:40 +00:00
|
|
|
|
{
|
|
|
|
|
return ValueTask.FromResult<IPaymentProvider>(svc switch
|
|
|
|
|
{
|
2023-05-09 13:56:57 +00:00
|
|
|
|
PaywallService.Strike => _services.GetRequiredService<StrikePaymentProvider>(),
|
2022-09-07 14:52:40 +00:00
|
|
|
|
_ => throw new ArgumentException("Must have a payment config", nameof(svc))
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|