go-cyber/x/resources/wasm/interface.go

package wasm

import (
	"encoding/json"

	errorsmod "cosmossdk.io/errors"

	wasmvmtypes "github.com/CosmWasm/wasmvm/types"

	pluginstypes "github.com/cybercongress/go-cyber/v7/plugins/types"
	"github.com/cybercongress/go-cyber/v7/x/resources/keeper"

	sdk "github.com/cosmos/cosmos-sdk/types"
)

type Messenger struct {
	keeper *keeper.Keeper
}

func NewMessenger(
	keeper *keeper.Keeper,
) *Messenger {
	return &Messenger{
		keeper: keeper,
	}
}

func (m *Messenger) HandleMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg pluginstypes.CyberMsg) ([]sdk.Event, [][]byte, error) {
	switch {
	case msg.Investmint != nil:
		if msg.Investmint.Neuron != contractAddr.String() {
			return nil, nil, wasmvmtypes.InvalidRequest{Err: "investmint wrong neuron"}
		}

		msgServer := keeper.NewMsgServerImpl(*m.keeper)

		if err := msg.Investmint.ValidateBasic(); err != nil {
			return nil, nil, errorsmod.Wrap(err, "failed validating msg")
		}

		res, err := msgServer.Investmint(
			sdk.WrapSDKContext(ctx),
			msg.Investmint,
		)
		if err != nil {
			return nil, nil, errorsmod.Wrap(err, "investmint msg")
		}

		responseBytes, err := json.Marshal(*res)
		if err != nil {
			return nil, nil, errorsmod.Wrap(err, "failed to serialize investmint response")
		}

		resp := [][]byte{responseBytes}

		return nil, resp, nil
	default:
		return nil, nil, pluginstypes.ErrHandleMsg
	}
}

Synonyms

go-cyber/x/rank/wasm/interface.go
space-pussy/x/dmn/wasm/interface.go
space-pussy/x/grid/wasm/interface.go
space-pussy/x/bandwidth/wasm/interface.go
space-pussy/x/resources/wasm/interface.go
space-pussy/x/graph/wasm/interface.go
go-cyber/x/dmn/wasm/interface.go
go-cyber/x/graph/wasm/interface.go
go-cyber/x/bandwidth/wasm/interface.go
space-pussy/x/rank/wasm/interface.go
go-cyber/x/grid/wasm/interface.go

Neighbours