using System.Text.Json; using HermesSocketLibrary.Requests.Messages; using Serilog; using TwitchChatTTS.Twitch.Redemptions; namespace TwitchChatTTS.Hermes.Socket.Requests { public class UpdateRedemptionAck : IRequestAck { public string Name => "update_redemption"; private readonly IRedemptionManager _redemptions; private readonly JsonSerializerOptions _options; private readonly ILogger _logger; public UpdateRedemptionAck(IRedemptionManager redemptions, JsonSerializerOptions options, ILogger logger) { _redemptions = redemptions; _options = options; _logger = logger; } public void Acknowledge(string requestId, string json, IDictionary? requestData) { var redemption = JsonSerializer.Deserialize(json, _options); if (redemption == null) { _logger.Warning($"Redemption data received is null."); return; } if (_redemptions.Update(redemption)) _logger.Information($"A redemption has been updated [redemption id: {redemption.Id}][twitch redemption id: {redemption.TwitchRedemptionId}]"); else _logger.Warning($"Failed to update an existing redemption [redemption id: {redemption.Id}][twitch redemption id: {redemption.TwitchRedemptionId}]"); } } }