github.com/lino-network/lino@v0.6.11/x/price/handler.go (about)

     1  package price
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  
     9  	// linotypes "github.com/lino-network/lino/types"
    10  	types "github.com/lino-network/lino/x/price/types"
    11  )
    12  
    13  type FeedPriceMsg = types.FeedPriceMsg
    14  
    15  // NewHandler - Handle all "price" type messages.
    16  func NewHandler(pm PriceKeeper) sdk.Handler {
    17  	return func(ctx sdk.Context, msg sdk.Msg) sdk.Result {
    18  		switch msg := msg.(type) {
    19  		case FeedPriceMsg:
    20  			return handleFeedPriceMsg(ctx, msg, pm)
    21  		default:
    22  			errMsg := fmt.Sprintf("unknown price msg type: %v", reflect.TypeOf(msg).Name())
    23  			return sdk.ErrUnknownRequest(errMsg).Result()
    24  		}
    25  	}
    26  }
    27  
    28  // handleFeedPriceMsg feed price message
    29  func handleFeedPriceMsg(ctx sdk.Context, msg FeedPriceMsg, pm PriceKeeper) sdk.Result {
    30  	err := pm.FeedPrice(ctx, msg.Username, msg.Price)
    31  	if err != nil {
    32  		return err.Result()
    33  	}
    34  	return sdk.Result{}
    35  }