github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/keeper/msg_server.go (about) 1 package keeper 2 3 import ( 4 "context" 5 6 sdk "github.com/Finschia/finschia-sdk/types" 7 sdkerrors "github.com/Finschia/finschia-sdk/types/errors" 8 "github.com/Finschia/finschia-sdk/x/fswap/types" 9 ) 10 11 var _ types.MsgServer = MsgServer{} 12 13 type MsgServer struct { 14 keeper Keeper 15 } 16 17 func NewMsgServer(keeper Keeper) *MsgServer { 18 return &MsgServer{keeper} 19 } 20 21 func (s MsgServer) Swap(ctx context.Context, req *types.MsgSwap) (*types.MsgSwapResponse, error) { 22 c := sdk.UnwrapSDKContext(ctx) 23 24 from, err := sdk.AccAddressFromBech32(req.FromAddress) 25 if err != nil { 26 return nil, err 27 } 28 29 if err := s.keeper.IsSendEnabledCoins(c, req.GetFromCoinAmount()); err != nil { 30 return &types.MsgSwapResponse{}, err 31 } 32 33 if err := s.keeper.Swap(c, from, req.GetFromCoinAmount(), req.GetToDenom()); err != nil { 34 return nil, err 35 } 36 37 return &types.MsgSwapResponse{}, nil 38 } 39 40 func (s MsgServer) SwapAll(ctx context.Context, req *types.MsgSwapAll) (*types.MsgSwapAllResponse, error) { 41 c := sdk.UnwrapSDKContext(ctx) 42 43 from, err := sdk.AccAddressFromBech32(req.FromAddress) 44 if err != nil { 45 return nil, err 46 } 47 48 balance := s.keeper.GetBalance(c, from, req.FromDenom) 49 if balance.IsZero() { 50 return nil, sdkerrors.ErrInsufficientFunds 51 } 52 53 if err := s.keeper.IsSendEnabledCoins(c, balance); err != nil { 54 return nil, err 55 } 56 57 if err := s.keeper.Swap(c, from, balance, req.GetToDenom()); err != nil { 58 return nil, err 59 } 60 61 return &types.MsgSwapAllResponse{}, nil 62 } 63 64 func (s MsgServer) SetSwap(ctx context.Context, req *types.MsgSetSwap) (*types.MsgSetSwapResponse, error) { 65 c := sdk.UnwrapSDKContext(ctx) 66 67 if err := s.keeper.validateAuthority(req.Authority); err != nil { 68 return nil, err 69 } 70 71 if err := s.keeper.SetSwap(c, req.GetSwap(), req.GetToDenomMetadata()); err != nil { 72 return nil, err 73 } 74 75 return &types.MsgSetSwapResponse{}, nil 76 }