// Message status returns:
        // UNFULFILLED
        private void TwitchClient_OnRewardRedeemed(object sender, RewardRedeemedEvent e)
        {
            // TODO make proper mitigation of this issue.
            if (!string.Equals(e.Status, "UNFULFILLED", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var pointRedemption = new PointRedemption
            {
                DisplayName = e.DisplayName,
                Message     = e.Message,
                RewardId    = e.RewardId,
                RewardName  = e.RewardTitle,
                TimeStamp   = e.TimeStamp
            };

            var redemptionOption = repository.GetRedemptionOption(e.RewardTitle);

            if (redemptionOption == null)
            {
                redemptionOption = new RedemptionOption(e.RewardTitle);
                repository.Save(redemptionOption);
                OnNewRedemptionRewardDetected?.Invoke(this, "NEW REWARD DETECTED; NEEDS SETUP!");
            }
            else if (redemptionOption.OptionAction == OptionAction.NoAction)
            {
                OnExistingRedemptionRewardNeedingSetup?.Invoke(this, "EXISTING REWARD DETECTED, STILL NEED SETUP!");
            }
            else
            {
                // REDEEM THAT FUCKERRR!
                var redeemer = redeemerOchestrator.GetRedeemer(redemptionOption.OptionAction);
                redeemer.Handle(pointRedemption, redemptionOption);
            }

            repository.Save(pointRedemption);
            OnRewardRedeemed?.Invoke(this, pointRedemption);
        }
Exemple #2
0
 private void TwitchPubSub_OnRewardRedeemed(object sender, OnRewardRedeemedArgs e)
 {
     OnRewardRedeemed?.Invoke(this, RewardRedeemedEvent.Create(e));
 }