예제 #1
0
        private void ForMessage(StreamlabsEvent streamlabsEvent, object eventData)
        {
            switch (streamlabsEvent.For)
            {
            case "streamlabs":
                if (streamlabsEvent.Type == "donation")
                {
                    var donation = JsonConvert.DeserializeObject <StreamlabsEvent <DonationMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Donation deserialized successfully");
                    OnDonation?.Invoke(this, donation);
                }
                break;

            case "twitch_account":
            {
                switch (streamlabsEvent.Type)
                {
                case "follow":
                {
                    var follow = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchFollowMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Twitch Follow deserialized successfully");
                    OnTwitchFollow?.Invoke(this, follow);
                }
                break;

                case "subscription":
                {
                    var sub = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchSubscriptionMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Twitch Sub deserialized successfully");
                    OnTwitchSubscription?.Invoke(this, sub);
                }
                break;

                case "host":
                {
                    var host = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchHostMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Twitch Host deserialized successfully");
                    OnTwitchHost?.Invoke(this, host);
                }
                break;

                case "bits":
                {
                    var cheer = JsonConvert.DeserializeObject <StreamlabsEvent <TwitchCheerMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Twitch Cheer deserialized successfully");
                    OnTwitchCheer?.Invoke(this, cheer);
                }
                break;
                }
            }
            break;

            case "youtube_account":
            {
                switch (streamlabsEvent.Type)
                {
                case "follow":
                {
                    var follow = JsonConvert.DeserializeObject <StreamlabsEvent <YouTubeSubscriptionMessage> >(eventData.ToString());
                    _logger?.LogDebug($"YouTube Sub deserialized successfully");
                    OnYouTubeSubscription?.Invoke(this, follow);
                }
                break;

                case "subscription":
                {
                    var sub = JsonConvert.DeserializeObject <StreamlabsEvent <YouTubeSponsorMessage> >(eventData.ToString());
                    _logger?.LogDebug($"YouTube Sponsor deserialized successfully");
                    OnYouTubeSponsor?.Invoke(this, sub);
                }
                break;

                case "superchat":
                {
                    var super = JsonConvert.DeserializeObject <StreamlabsEvent <YouTubeSuperchatMessage> >(eventData.ToString());
                    _logger?.LogDebug($"YouTube Superchat deserialized successfully");
                    OnYouTubeSuperchat?.Invoke(this, super);
                }
                break;
                }
            }
            break;

            case "mixer_account":
            {
                switch (streamlabsEvent.Type)
                {
                case "follow":
                {
                    var follow = JsonConvert.DeserializeObject <StreamlabsEvent <MixerFollowMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Mixer Follow deserialized successfully");
                    OnMixerFollow?.Invoke(this, follow);
                }
                break;

                case "subscription":
                {
                    var sub = JsonConvert.DeserializeObject <StreamlabsEvent <MixerSubscriptionMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Mixer Sub deserialized successfully");
                    OnMixerSubscription?.Invoke(this, sub);
                }
                break;

                case "host":
                {
                    var host = JsonConvert.DeserializeObject <StreamlabsEvent <MixerHostMessage> >(eventData.ToString());
                    _logger?.LogDebug($"Mixer Host deserialized successfully");
                    OnMixerHost?.Invoke(this, host);
                }
                break;
                }
            }
            break;
            }
        }