From e3ee43e6ae98a88aa3d1e3c5d27b11ee1dcb4f3b Mon Sep 17 00:00:00 2001 From: Ash Keel Date: Wed, 23 Nov 2022 16:34:49 +0100 Subject: [PATCH] refactor: less repetition but it's probably bad --- cli.database.go | 3 +-- driver.pebble.go | 5 ++--- main.go | 4 ++++ modules/http/server.go | 4 +++- modules/loyalty/manager.go | 24 +++++++++++++----------- modules/twitch/bot.go | 3 +-- modules/twitch/client.eventsub.go | 1 + modules/twitch/client.go | 8 +++++--- modules/twitch/data.go | 8 +++++--- modules/twitch/modules.alerts.go | 19 +++++++++---------- modules/twitch/modules.timer.go | 3 +-- 11 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 modules/twitch/client.eventsub.go diff --git a/cli.database.go b/cli.database.go index 4540428..09f77b7 100644 --- a/cli.database.go +++ b/cli.database.go @@ -3,7 +3,6 @@ package main import ( "os" - jsoniter "github.com/json-iterator/go" "github.com/urfave/cli/v2" ) @@ -19,7 +18,7 @@ func cliImport(ctx *cli.Context) error { inStream = file } var entries map[string]string - err := jsoniter.ConfigFastest.NewDecoder(inStream).Decode(&entries) + err := json.NewDecoder(inStream).Decode(&entries) if err != nil { return fatalError(err, "could not decode import file") } diff --git a/driver.pebble.go b/driver.pebble.go index 735d1a6..387ac6b 100644 --- a/driver.pebble.go +++ b/driver.pebble.go @@ -7,7 +7,6 @@ import ( "path/filepath" "github.com/cockroachdb/pebble" - jsoniter "github.com/json-iterator/go" "github.com/labstack/gommon/log" kv "github.com/strimertul/kilovolt/v9" pebble_driver "github.com/strimertul/kv-pebble" @@ -69,7 +68,7 @@ func (p *PebbleDatabase) Export(file io.Writer) error { func (p *PebbleDatabase) Restore(file io.Reader) error { in := make(map[string]string) - err := jsoniter.ConfigFastest.NewDecoder(file).Decode(&in) + err := json.NewDecoder(file).Decode(&in) if err != nil { return fmt.Errorf("Could not decode backup: %w", err) } @@ -91,5 +90,5 @@ func (p *PebbleDatabase) Backup(file io.Writer) error { for iter.First(); iter.Valid(); iter.Next() { out[string(iter.Key())] = string(iter.Value()) } - return jsoniter.ConfigFastest.NewEncoder(file).Encode(out) + return json.NewEncoder(file).Encode(out) } diff --git a/main.go b/main.go index 577c1d3..305367b 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,8 @@ import ( "os" "time" + jsoniter "github.com/json-iterator/go" + "github.com/urfave/cli/v2" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/options" @@ -23,6 +25,8 @@ import ( _ "net/http/pprof" ) +var json = jsoniter.ConfigFastest + const databaseDefaultDriver = "pebble" var appVersion = "v0.0.0-UNKNOWN" diff --git a/modules/http/server.go b/modules/http/server.go index 8f8b7c2..4702c34 100644 --- a/modules/http/server.go +++ b/modules/http/server.go @@ -20,6 +20,8 @@ import ( "github.com/strimertul/strimertul/modules" ) +var json = jsoniter.ConfigFastest + type Server struct { Config ServerConfig db *database.DBModule @@ -136,7 +138,7 @@ func (s *Server) Listen() error { if key == ServerConfigKey { oldBind := s.Config.Bind oldPassword := s.Config.KVPassword - err := jsoniter.ConfigFastest.Unmarshal([]byte(value), &s.Config) + err := json.Unmarshal([]byte(value), &s.Config) if err != nil { s.logger.Error("Failed to unmarshal config", zap.Error(err)) return diff --git a/modules/loyalty/manager.go b/modules/loyalty/manager.go index 5c15396..8b65aaf 100644 --- a/modules/loyalty/manager.go +++ b/modules/loyalty/manager.go @@ -15,6 +15,8 @@ import ( "go.uber.org/zap" ) +var json = jsoniter.ConfigFastest + var ( ErrRedeemInCooldown = errors.New("redeem is on cooldown") ErrGoalNotFound = errors.New("goal not found") @@ -83,7 +85,7 @@ func Register(manager *modules.Manager) error { loyalty.points = make(map[string]PointsEntry) for k, v := range points { var entry PointsEntry - err := jsoniter.ConfigFastest.UnmarshalFromString(v, &entry) + err := json.UnmarshalFromString(v, &entry) if err != nil { return err } @@ -132,7 +134,7 @@ func (m *Manager) Status() modules.ModuleStatus { } func (m *Manager) Close() error { - //TODO Stop subscriptions? + // TODO Stop subscriptions? return nil } @@ -145,35 +147,35 @@ func (m *Manager) update(key, value string) { err = func() error { m.mu.Lock() defer m.mu.Unlock() - return jsoniter.ConfigFastest.UnmarshalFromString(value, &m.config) + return json.UnmarshalFromString(value, &m.config) }() case GoalsKey: err = func() error { m.mu.Lock() defer m.mu.Unlock() - return jsoniter.ConfigFastest.UnmarshalFromString(value, &m.goals) + return json.UnmarshalFromString(value, &m.goals) }() case RewardsKey: err = func() error { m.mu.Lock() defer m.mu.Unlock() - return jsoniter.ConfigFastest.UnmarshalFromString(value, &m.rewards) + return json.UnmarshalFromString(value, &m.rewards) }() case QueueKey: err = func() error { m.mu.Lock() defer m.mu.Unlock() - return jsoniter.ConfigFastest.UnmarshalFromString(value, &m.queue) + return json.UnmarshalFromString(value, &m.queue) }() case CreateRedeemRPC: var redeem Redeem - err = jsoniter.ConfigFastest.UnmarshalFromString(value, &redeem) + err = json.UnmarshalFromString(value, &redeem) if err == nil { err = m.AddRedeem(redeem) } case RemoveRedeemRPC: var redeem Redeem - err = jsoniter.ConfigFastest.UnmarshalFromString(value, &redeem) + err = json.UnmarshalFromString(value, &redeem) if err == nil { err = m.RemoveRedeem(redeem) } @@ -183,7 +185,7 @@ func (m *Manager) update(key, value string) { // User point changed case strings.HasPrefix(key, PointsPrefix): var entry PointsEntry - err = jsoniter.ConfigFastest.UnmarshalFromString(value, &entry) + err = json.UnmarshalFromString(value, &entry) user := key[len(PointsPrefix):] func() { m.mu.Lock() @@ -205,7 +207,7 @@ func (m *Manager) handleRemote(key, value string) { case KVExLoyaltyRedeem: // Parse request var redeemRequest ExLoyaltyRedeem - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &redeemRequest) + err := json.UnmarshalFromString(value, &redeemRequest) if err != nil { m.logger.Warn("error decoding redeem request", zap.Error(err)) break @@ -229,7 +231,7 @@ func (m *Manager) handleRemote(key, value string) { case KVExLoyaltyContribute: // Parse request var contributeRequest ExLoyaltyContribute - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &contributeRequest) + err := json.UnmarshalFromString(value, &contributeRequest) if err != nil { m.logger.Warn("error decoding contribution request", zap.Error(err)) break diff --git a/modules/twitch/bot.go b/modules/twitch/bot.go index 649993f..dae4981 100644 --- a/modules/twitch/bot.go +++ b/modules/twitch/bot.go @@ -11,7 +11,6 @@ import ( "github.com/Masterminds/sprig/v3" irc "github.com/gempir/go-twitch-irc/v3" - jsoniter "github.com/json-iterator/go" ) type Bot struct { @@ -167,7 +166,7 @@ func (b *Bot) updateCommands(key, value string) { err := func() error { b.mu.Lock() defer b.mu.Unlock() - return jsoniter.ConfigFastest.UnmarshalFromString(value, &b.customCommands) + return json.UnmarshalFromString(value, &b.customCommands) }() if err != nil { b.logger.Error("failed to decode new custom commands", zap.Error(err)) diff --git a/modules/twitch/client.eventsub.go b/modules/twitch/client.eventsub.go new file mode 100644 index 0000000..9b9163d --- /dev/null +++ b/modules/twitch/client.eventsub.go @@ -0,0 +1 @@ +package twitch diff --git a/modules/twitch/client.go b/modules/twitch/client.go index 56d7222..b9de425 100644 --- a/modules/twitch/client.go +++ b/modules/twitch/client.go @@ -15,6 +15,8 @@ import ( "github.com/strimertul/strimertul/modules/loyalty" ) +var json = jsoniter.ConfigFastest + type Client struct { Config Config Bot *Bot @@ -97,7 +99,7 @@ func Register(manager *modules.Manager) error { go db.Subscribe(func(key, value string) { switch key { case ConfigKey: - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &config) + err := json.UnmarshalFromString(value, &config) if err != nil { logger.Error("failed to unmarshal config", zap.Error(err)) return @@ -111,7 +113,7 @@ func Register(manager *modules.Manager) error { logger.Info("reloaded/updated Twitch API") case BotConfigKey: var twitchBotConfig BotConfig - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &twitchBotConfig) + err := json.UnmarshalFromString(value, &twitchBotConfig) if err != nil { logger.Error("failed to unmarshal config", zap.Error(err)) return @@ -151,7 +153,7 @@ func (c *Client) runStatusPoll() { // Check if streamer is online, if possible func() { status, err := c.API.GetStreams(&helix.StreamsParams{ - UserLogins: []string{c.Bot.config.Channel}, //TODO Replace with something non bot dependant + UserLogins: []string{c.Bot.config.Channel}, // TODO Replace with something non bot dependant }) if err != nil { c.logger.Error("Error checking stream status", zap.Error(err)) diff --git a/modules/twitch/data.go b/modules/twitch/data.go index 521e193..ddbb565 100644 --- a/modules/twitch/data.go +++ b/modules/twitch/data.go @@ -20,9 +20,11 @@ type BotConfig struct { ChatHistory int `json:"chat_history"` } -const ChatEventKey = "twitch/ev/chat-message" -const ChatHistoryKey = "twitch/chat-history" -const ChatActivityKey = "twitch/chat-activity" +const ( + ChatEventKey = "twitch/ev/chat-message" + ChatHistoryKey = "twitch/chat-history" + ChatActivityKey = "twitch/chat-activity" +) type BotCustomCommand struct { Description string `json:"description"` diff --git a/modules/twitch/modules.alerts.go b/modules/twitch/modules.alerts.go index 7293d6d..7da0190 100644 --- a/modules/twitch/modules.alerts.go +++ b/modules/twitch/modules.alerts.go @@ -2,7 +2,6 @@ package twitch import ( "bytes" - "encoding/json" "math/rand" "sync" "text/template" @@ -20,7 +19,7 @@ const BotAlertsKey = "twitch/bot-modules/alerts/config" type eventSubNotification struct { Subscription helix.EventSubSubscription `json:"subscription"` Challenge string `json:"challenge"` - Event json.RawMessage `json:"event"` + Event jsoniter.RawMessage `json:"event"` } type BotAlertsConfig struct { @@ -114,7 +113,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { go bot.api.db.Subscribe(func(key, value string) { if key == BotAlertsKey { - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &mod.Config) + err := json.UnmarshalFromString(value, &mod.Config) if err != nil { bot.logger.Debug("error reloading timer config", zap.Error(err)) } else { @@ -238,7 +237,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { go bot.api.db.Subscribe(func(key, value string) { if key == "stulbe/ev/webhook" { var ev eventSubNotification - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &ev) + err := json.UnmarshalFromString(value, &ev) if err != nil { bot.logger.Debug("error parsing webhook payload", zap.Error(err)) return @@ -251,7 +250,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { } // Parse as follow event var followEv helix.EventSubChannelFollowEvent - err := jsoniter.ConfigFastest.Unmarshal(ev.Event, &followEv) + err := json.Unmarshal(ev.Event, &followEv) if err != nil { bot.logger.Debug("error parsing follow event", zap.Error(err)) return @@ -272,7 +271,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { } // Parse as raid event var raidEv helix.EventSubChannelRaidEvent - err := jsoniter.ConfigFastest.Unmarshal(ev.Event, &raidEv) + err := json.Unmarshal(ev.Event, &raidEv) if err != nil { bot.logger.Debug("error parsing raid event", zap.Error(err)) return @@ -309,7 +308,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { } // Parse as cheer event var cheerEv helix.EventSubChannelCheerEvent - err := jsoniter.ConfigFastest.Unmarshal(ev.Event, &cheerEv) + err := json.Unmarshal(ev.Event, &cheerEv) if err != nil { bot.logger.Debug("error parsing cheer event", zap.Error(err)) return @@ -346,7 +345,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { } // Parse as subscription event var subEv helix.EventSubChannelSubscribeEvent - err := jsoniter.ConfigFastest.Unmarshal(ev.Event, &subEv) + err := json.Unmarshal(ev.Event, &subEv) if err != nil { bot.logger.Debug("error parsing sub event", zap.Error(err)) return @@ -359,7 +358,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { } // Parse as subscription event var subEv helix.EventSubChannelSubscriptionMessageEvent - err := jsoniter.ConfigFastest.Unmarshal(ev.Event, &subEv) + err := json.Unmarshal(ev.Event, &subEv) if err != nil { bot.logger.Debug("error parsing sub event", zap.Error(err)) return @@ -372,7 +371,7 @@ func SetupAlerts(bot *Bot) *BotAlertsModule { } // Parse as gift event var giftEv helix.EventSubChannelSubscriptionGiftEvent - err := jsoniter.ConfigFastest.Unmarshal(ev.Event, &giftEv) + err := json.Unmarshal(ev.Event, &giftEv) if err != nil { bot.logger.Debug("error parsing raid event", zap.Error(err)) return diff --git a/modules/twitch/modules.timer.go b/modules/twitch/modules.timer.go index b77fc96..c55bada 100644 --- a/modules/twitch/modules.timer.go +++ b/modules/twitch/modules.timer.go @@ -8,7 +8,6 @@ import ( "go.uber.org/zap" irc "github.com/gempir/go-twitch-irc/v3" - jsoniter "github.com/json-iterator/go" ) const BotTimersKey = "twitch/bot-modules/timers/config" @@ -58,7 +57,7 @@ func SetupTimers(bot *Bot) *BotTimerModule { go bot.api.db.Subscribe(func(key, value string) { if key == BotTimersKey { - err := jsoniter.ConfigFastest.UnmarshalFromString(value, &mod.Config) + err := json.UnmarshalFromString(value, &mod.Config) if err != nil { bot.logger.Debug("error reloading timer config", zap.Error(err)) } else {