From 453fa0b71b528469b33796f2b869a2d039bdee6f Mon Sep 17 00:00:00 2001 From: Richard Pringle Date: Fri, 7 Feb 2025 13:42:30 -0500 Subject: [PATCH] Don't go through json --- messages/teleporter/config.go | 17 +++++++++++++++++ messages/teleporter/message_handler.go | 16 ++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/messages/teleporter/config.go b/messages/teleporter/config.go index 24582fd4..68670dfb 100644 --- a/messages/teleporter/config.go +++ b/messages/teleporter/config.go @@ -13,6 +13,23 @@ type Config struct { RewardAddress string `json:"reward-address"` } +func ConfigFromMap(m map[string]interface{}) (*Config, error) { + rewardAddress, ok := m["reward-address"].(string) + if !ok { + return nil, fmt.Errorf("reward-address not found") + } + + c := &Config{ + RewardAddress: rewardAddress, + } + + if err := c.Validate(); err != nil { + return nil, err + } + + return c, nil +} + func (c *Config) Validate() error { if !common.IsHexAddress(c.RewardAddress) { return fmt.Errorf("invalid reward address for EVM source subnet: %s", c.RewardAddress) diff --git a/messages/teleporter/message_handler.go b/messages/teleporter/message_handler.go index 8a3f8ea3..60d5e534 100644 --- a/messages/teleporter/message_handler.go +++ b/messages/teleporter/message_handler.go @@ -5,7 +5,6 @@ package teleporter import ( "context" - "encoding/json" "fmt" "time" @@ -34,7 +33,7 @@ const ( ) type factory struct { - messageConfig Config + messageConfig *Config protocolAddress common.Address logger logging.Logger deciderClient pbDecider.DeciderServiceClient @@ -65,19 +64,8 @@ func NewMessageHandlerFactory( messageProtocolConfig config.MessageProtocolConfig, deciderClientConn *grpc.ClientConn, ) (messages.MessageHandlerFactory, error) { - // Marshal the map and unmarshal into the Teleporter config - data, err := json.Marshal(messageProtocolConfig.Settings) + messageConfig, err := ConfigFromMap(messageProtocolConfig.Settings) if err != nil { - logger.Error("Failed to marshal Teleporter config") - return nil, err - } - var messageConfig Config - if err := json.Unmarshal(data, &messageConfig); err != nil { - logger.Error("Failed to unmarshal Teleporter config") - return nil, err - } - - if err := messageConfig.Validate(); err != nil { logger.Error( "Invalid Teleporter config.", zap.Error(err),