github.com/InjectiveLabs/sdk-go@v1.53.0/chain/wasmx/types/custom_execution.go (about)

     1  package types
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"cosmossdk.io/errors"
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
     9  )
    10  
    11  type InjectiveExecMsg struct {
    12  	ExecutionData ExecutionData `json:"injective_exec"`
    13  }
    14  
    15  type ExecutionData struct {
    16  	Origin string      `json:"origin"`
    17  	Name   string      `json:"name"`
    18  	Args   interface{} `json:"args"`
    19  }
    20  
    21  func NewInjectiveExecMsg(origin sdk.AccAddress, data string) (*InjectiveExecMsg, error) {
    22  	var e ExecutionData
    23  	if err := json.Unmarshal([]byte(data), &e); err != nil {
    24  		return nil, errors.Wrap(err, data)
    25  	}
    26  
    27  	if e.Origin == "" && origin.Empty() {
    28  		return nil, errors.Wrap(sdkerrors.ErrInvalidAddress, "origin address is empty")
    29  	}
    30  
    31  	// override e.Origin for safety
    32  	e.Origin = origin.String()
    33  
    34  	return &InjectiveExecMsg{
    35  		ExecutionData: e,
    36  	}, nil
    37  }