Fix redis paywall config

This commit is contained in:
Kieran 2022-02-21 13:36:22 +00:00
parent edf26c2137
commit 983de173aa
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
3 changed files with 14 additions and 5 deletions

View File

@ -1,6 +1,4 @@
using System.Text.Json.Serialization;
namespace VoidCat.Model.Paywall;
namespace VoidCat.Model.Paywall;
public enum PaywallServices
{
@ -9,4 +7,8 @@ public enum PaywallServices
}
public abstract record PaywallConfig(PaywallServices Service, PaywallMoney Cost);
public record StrikePaywallConfig(string Handle, PaywallMoney Cost) : PaywallConfig(PaywallServices.Strike, Cost);
public record StrikePaywallConfig(PaywallServices Service, PaywallMoney Cost) : PaywallConfig(Service, Cost)
{
public string Handle { get; init; }
}

View File

@ -35,6 +35,8 @@ services.AddRouting();
services.AddControllers().AddNewtonsoftJson((opt) =>
{
opt.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
opt.SerializerSettings.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor;
opt.SerializerSettings.MissingMemberHandling = MissingMemberHandling.Ignore;
});
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>

View File

@ -17,7 +17,7 @@ public class RedisPaywallStore : IPaywallStore
public async ValueTask<PaywallConfig?> GetConfig(Guid id)
{
var json = await _database.StringGetAsync(ConfigKey(id));
var cfg = json.HasValue ? JsonConvert.DeserializeObject<PaywallConfig>(json) : default;
var cfg = json.HasValue ? JsonConvert.DeserializeObject<PaywallBlank>(json) : default;
return cfg?.Service switch
{
PaywallServices.Strike => JsonConvert.DeserializeObject<StrikePaywallConfig>(json),
@ -44,4 +44,9 @@ public class RedisPaywallStore : IPaywallStore
private RedisKey ConfigKey(Guid id) => $"paywall:config:{id}";
private RedisKey OrderKey(Guid id) => $"paywall:order:{id}";
internal class PaywallBlank
{
public PaywallServices Service { get; init; }
}
}