/
tx_order.go
89 lines (78 loc) · 2.65 KB
/
tx_order.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package rest
import (
"net/http"
"github.com/cosmos/cosmos-sdk/client/context"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/rest"
"github.com/coinexchain/cet-sdk/modules/market/internal/types"
"github.com/coinexchain/cosmos-utils/client/restutil"
)
// SendReq defines the properties of a send request's body.
type createOrderReq struct {
BaseReq rest.BaseReq `json:"base_req"`
OrderType int `json:"order_type"`
TradingPair string `json:"trading_pair"`
Identify int `json:"identify"`
PricePrecision int `json:"price_precision"`
Price int64 `json:"price"`
Quantity int64 `json:"quantity"`
Side int `json:"side"`
ExistBlocks int `json:"exist_blocks"`
TimeInForce int `json:"time_in_force"`
}
func (req *createOrderReq) New() restutil.RestReq {
return new(createOrderReq)
}
func (req *createOrderReq) GetBaseReq() *rest.BaseReq {
return &req.BaseReq
}
func (req *createOrderReq) GetMsg(r *http.Request, sender sdk.AccAddress) (sdk.Msg, error) {
msg := types.MsgCreateOrder{
Sender: sender,
TradingPair: req.TradingPair,
Identify: byte(req.Identify),
OrderType: byte(req.OrderType),
PricePrecision: byte(req.PricePrecision),
Price: req.Price,
Quantity: req.Quantity,
Side: byte(req.Side),
TimeInForce: types.IOC,
ExistBlocks: int64(req.ExistBlocks),
}
if r.URL.Path == "/market/gte-orders" {
msg.TimeInForce = types.GTE
}
return msg, nil
}
type cancelOrderReq struct {
BaseReq rest.BaseReq `json:"base_req"`
OrderID string `json:"order_id"`
}
func (req *cancelOrderReq) New() restutil.RestReq {
return new(cancelOrderReq)
}
func (req *cancelOrderReq) GetBaseReq() *rest.BaseReq {
return &req.BaseReq
}
func (req *cancelOrderReq) GetMsg(r *http.Request, sender sdk.AccAddress) (sdk.Msg, error) {
msg := &types.MsgCancelOrder{
OrderID: req.OrderID,
Sender: sender,
}
return msg, nil
}
func createGTEOrderHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc {
return createOrderAndBroadCast(cdc, cliCtx)
}
func createIOCOrderHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc {
return createOrderAndBroadCast(cdc, cliCtx)
}
func cancelOrderHandlerFn(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc {
var req cancelOrderReq
return restutil.NewRestHandler(cdc, cliCtx, &req)
}
func createOrderAndBroadCast(cdc *codec.Codec, cliCtx context.CLIContext) http.HandlerFunc {
var req createOrderReq
return restutil.NewRestHandler(cdc, cliCtx, &req)
}