diff --git a/pkg/exchange/kucoin/kucoinapi/cancel_all_order_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/cancel_all_order_request_requestgen.go similarity index 69% rename from pkg/exchange/kucoin/kucoinapi/cancel_all_order_request_accessors.go rename to pkg/exchange/kucoin/kucoinapi/cancel_all_order_request_requestgen.go index 10e5c91a4..873cd7569 100644 --- a/pkg/exchange/kucoin/kucoinapi/cancel_all_order_request_accessors.go +++ b/pkg/exchange/kucoin/kucoinapi/cancel_all_order_request_requestgen.go @@ -18,9 +18,21 @@ func (r *CancelAllOrderRequest) TradeType(tradeType string) *CancelAllOrderReque return r } -func (r *CancelAllOrderRequest) GetParameters() (map[string]interface{}, error) { +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (r *CancelAllOrderRequest) GetQueryParameters() (url.Values, error) { var params = map[string]interface{}{} + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (r *CancelAllOrderRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} // check symbol field -> json key symbol if r.symbol != nil { symbol := *r.symbol @@ -28,7 +40,6 @@ func (r *CancelAllOrderRequest) GetParameters() (map[string]interface{}, error) // assign parameter of symbol params["symbol"] = symbol } - // check tradeType field -> json key tradeType if r.tradeType != nil { tradeType := *r.tradeType @@ -40,6 +51,7 @@ func (r *CancelAllOrderRequest) GetParameters() (map[string]interface{}, error) return params, nil } +// GetParametersQuery converts the parameters from GetParameters into the url.Values format func (r *CancelAllOrderRequest) GetParametersQuery() (url.Values, error) { query := url.Values{} @@ -55,6 +67,7 @@ func (r *CancelAllOrderRequest) GetParametersQuery() (url.Values, error) { return query, nil } +// GetParametersJSON converts the parameters from GetParameters into the JSON format func (r *CancelAllOrderRequest) GetParametersJSON() ([]byte, error) { params, err := r.GetParameters() if err != nil { diff --git a/pkg/exchange/kucoin/kucoinapi/cancel_order_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/cancel_order_request_accessors.go deleted file mode 100644 index aa322b268..000000000 --- a/pkg/exchange/kucoin/kucoinapi/cancel_order_request_accessors.go +++ /dev/null @@ -1,65 +0,0 @@ -// Code generated by "requestgen -type CancelOrderRequest"; DO NOT EDIT. - -package kucoinapi - -import ( - "encoding/json" - "fmt" - "net/url" -) - -func (c *CancelOrderRequest) OrderID(orderID string) *CancelOrderRequest { - c.orderID = &orderID - return c -} - -func (c *CancelOrderRequest) ClientOrderID(clientOrderID string) *CancelOrderRequest { - c.clientOrderID = &clientOrderID - return c -} - -func (c *CancelOrderRequest) GetParameters() (map[string]interface{}, error) { - var params = map[string]interface{}{} - - // check orderID field -> json key orderID - if c.orderID != nil { - orderID := *c.orderID - - // assign parameter of orderID - params["orderID"] = orderID - } - - // check clientOrderID field -> json key clientOrderID - if c.clientOrderID != nil { - clientOrderID := *c.clientOrderID - - // assign parameter of clientOrderID - params["clientOrderID"] = clientOrderID - } - - return params, nil -} - -func (c *CancelOrderRequest) GetParametersQuery() (url.Values, error) { - query := url.Values{} - - params, err := c.GetParameters() - if err != nil { - return query, err - } - - for k, v := range params { - query.Add(k, fmt.Sprintf("%v", v)) - } - - return query, nil -} - -func (c *CancelOrderRequest) GetParametersJSON() ([]byte, error) { - params, err := c.GetParameters() - if err != nil { - return nil, err - } - - return json.Marshal(params) -} diff --git a/pkg/exchange/kucoin/kucoinapi/cancel_order_request_requestgen.go b/pkg/exchange/kucoin/kucoinapi/cancel_order_request_requestgen.go new file mode 100644 index 000000000..f405d148e --- /dev/null +++ b/pkg/exchange/kucoin/kucoinapi/cancel_order_request_requestgen.go @@ -0,0 +1,78 @@ +// Code generated by "requestgen -type CancelOrderRequest"; DO NOT EDIT. + +package kucoinapi + +import ( + "encoding/json" + "fmt" + "net/url" +) + +func (r *CancelOrderRequest) OrderID(orderID string) *CancelOrderRequest { + r.orderID = &orderID + return r +} + +func (r *CancelOrderRequest) ClientOrderID(clientOrderID string) *CancelOrderRequest { + r.clientOrderID = &clientOrderID + return r +} + +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (r *CancelOrderRequest) GetQueryParameters() (url.Values, error) { + var params = map[string]interface{}{} + + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (r *CancelOrderRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} + // check orderID field -> json key orderID + if r.orderID != nil { + orderID := *r.orderID + + // assign parameter of orderID + params["orderID"] = orderID + } + // check clientOrderID field -> json key clientOrderID + if r.clientOrderID != nil { + clientOrderID := *r.clientOrderID + + // assign parameter of clientOrderID + params["clientOrderID"] = clientOrderID + } + + return params, nil +} + +// GetParametersQuery converts the parameters from GetParameters into the url.Values format +func (r *CancelOrderRequest) GetParametersQuery() (url.Values, error) { + query := url.Values{} + + params, err := r.GetParameters() + if err != nil { + return query, err + } + + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParametersJSON converts the parameters from GetParameters into the JSON format +func (r *CancelOrderRequest) GetParametersJSON() ([]byte, error) { + params, err := r.GetParameters() + if err != nil { + return nil, err + } + + return json.Marshal(params) +} diff --git a/pkg/exchange/kucoin/kucoinapi/get_fills_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/get_fills_request_requestgen.go similarity index 80% rename from pkg/exchange/kucoin/kucoinapi/get_fills_request_accessors.go rename to pkg/exchange/kucoin/kucoinapi/get_fills_request_requestgen.go index 76a33d025..ef8f88d9d 100644 --- a/pkg/exchange/kucoin/kucoinapi/get_fills_request_accessors.go +++ b/pkg/exchange/kucoin/kucoinapi/get_fills_request_requestgen.go @@ -40,9 +40,21 @@ func (r *GetFillsRequest) EndAt(endAt time.Time) *GetFillsRequest { return r } -func (r *GetFillsRequest) GetParameters() (map[string]interface{}, error) { +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (r *GetFillsRequest) GetQueryParameters() (url.Values, error) { var params = map[string]interface{}{} + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (r *GetFillsRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} // check orderID field -> json key orderId if r.orderID != nil { orderID := *r.orderID @@ -50,7 +62,6 @@ func (r *GetFillsRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of orderID params["orderId"] = orderID } - // check symbol field -> json key symbol if r.symbol != nil { symbol := *r.symbol @@ -58,7 +69,6 @@ func (r *GetFillsRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of symbol params["symbol"] = symbol } - // check side field -> json key side if r.side != nil { side := *r.side @@ -75,7 +85,6 @@ func (r *GetFillsRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of side params["side"] = side } - // check orderType field -> json key type if r.orderType != nil { orderType := *r.orderType @@ -92,28 +101,27 @@ func (r *GetFillsRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of orderType params["type"] = orderType } - // check startAt field -> json key startAt if r.startAt != nil { startAt := *r.startAt // assign parameter of startAt - // convert time.Time to milliseconds time + // convert time.Time to milliseconds time stamp params["startAt"] = strconv.FormatInt(startAt.UnixNano()/int64(time.Millisecond), 10) } - // check endAt field -> json key endAt if r.endAt != nil { endAt := *r.endAt // assign parameter of endAt - // convert time.Time to milliseconds time + // convert time.Time to milliseconds time stamp params["endAt"] = strconv.FormatInt(endAt.UnixNano()/int64(time.Millisecond), 10) } return params, nil } +// GetParametersQuery converts the parameters from GetParameters into the url.Values format func (r *GetFillsRequest) GetParametersQuery() (url.Values, error) { query := url.Values{} @@ -129,6 +137,7 @@ func (r *GetFillsRequest) GetParametersQuery() (url.Values, error) { return query, nil } +// GetParametersJSON converts the parameters from GetParameters into the JSON format func (r *GetFillsRequest) GetParametersJSON() ([]byte, error) { params, err := r.GetParameters() if err != nil { diff --git a/pkg/exchange/kucoin/kucoinapi/get_k_lines_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/get_k_lines_request_accessors.go deleted file mode 100644 index f659d1265..000000000 --- a/pkg/exchange/kucoin/kucoinapi/get_k_lines_request_accessors.go +++ /dev/null @@ -1,100 +0,0 @@ -// Code generated by "requestgen -type GetKLinesRequest"; DO NOT EDIT. - -package kucoinapi - -import ( - "encoding/json" - "fmt" - "net/url" - "strconv" - "time" -) - -func (g *GetKLinesRequest) Symbol(symbol string) *GetKLinesRequest { - g.symbol = symbol - return g -} - -func (g *GetKLinesRequest) Interval(interval string) *GetKLinesRequest { - g.interval = interval - return g -} - -func (g *GetKLinesRequest) StartAt(startAt time.Time) *GetKLinesRequest { - g.startAt = &startAt - return g -} - -func (g *GetKLinesRequest) EndAt(endAt time.Time) *GetKLinesRequest { - g.endAt = &endAt - return g -} - -func (g *GetKLinesRequest) GetParameters() (map[string]interface{}, error) { - var params = map[string]interface{}{} - - // check symbol field -> json key symbol - symbol := g.symbol - - // assign parameter of symbol - params["symbol"] = symbol - - // check interval field -> json key type - interval := g.interval - - switch interval { - case "1min", "3min", "5min", "15min", "30min", "1hour", "2hour", "4hour", "6hour", "8hour", "12hour", "1day", "1week": - params["type"] = interval - - default: - return params, fmt.Errorf("type value %v is invalid", interval) - - } - - // assign parameter of interval - params["type"] = interval - - // check startAt field -> json key startAt - if g.startAt != nil { - startAt := *g.startAt - - // assign parameter of startAt - // convert time.Time to seconds time stamp - params["startAt"] = strconv.FormatInt(startAt.Unix(), 10) - } - - // check endAt field -> json key endAt - if g.endAt != nil { - endAt := *g.endAt - - // assign parameter of endAt - // convert time.Time to seconds time stamp - params["endAt"] = strconv.FormatInt(endAt.Unix(), 10) - } - - return params, nil -} - -func (g *GetKLinesRequest) GetParametersQuery() (url.Values, error) { - query := url.Values{} - - params, err := g.GetParameters() - if err != nil { - return query, err - } - - for k, v := range params { - query.Add(k, fmt.Sprintf("%v", v)) - } - - return query, nil -} - -func (g *GetKLinesRequest) GetParametersJSON() ([]byte, error) { - params, err := g.GetParameters() - if err != nil { - return nil, err - } - - return json.Marshal(params) -} diff --git a/pkg/exchange/kucoin/kucoinapi/get_k_lines_request_requestgen.go b/pkg/exchange/kucoin/kucoinapi/get_k_lines_request_requestgen.go new file mode 100644 index 000000000..41d3a2b31 --- /dev/null +++ b/pkg/exchange/kucoin/kucoinapi/get_k_lines_request_requestgen.go @@ -0,0 +1,111 @@ +// Code generated by "requestgen -type GetKLinesRequest"; DO NOT EDIT. + +package kucoinapi + +import ( + "encoding/json" + "fmt" + "net/url" + "strconv" + "time" +) + +func (r *GetKLinesRequest) Symbol(symbol string) *GetKLinesRequest { + r.symbol = symbol + return r +} + +func (r *GetKLinesRequest) Interval(interval string) *GetKLinesRequest { + r.interval = interval + return r +} + +func (r *GetKLinesRequest) StartAt(startAt time.Time) *GetKLinesRequest { + r.startAt = &startAt + return r +} + +func (r *GetKLinesRequest) EndAt(endAt time.Time) *GetKLinesRequest { + r.endAt = &endAt + return r +} + +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (r *GetKLinesRequest) GetQueryParameters() (url.Values, error) { + var params = map[string]interface{}{} + + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (r *GetKLinesRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} + // check symbol field -> json key symbol + symbol := r.symbol + + // assign parameter of symbol + params["symbol"] = symbol + // check interval field -> json key type + interval := r.interval + + switch interval { + case "1min", "3min", "5min", "15min", "30min", "1hour", "2hour", "4hour", "6hour", "8hour", "12hour", "1day", "1week": + params["type"] = interval + + default: + return params, fmt.Errorf("type value %v is invalid", interval) + + } + + // assign parameter of interval + params["type"] = interval + // check startAt field -> json key startAt + if r.startAt != nil { + startAt := *r.startAt + + // assign parameter of startAt + // convert time.Time to seconds time stamp + params["startAt"] = strconv.FormatInt(startAt.Unix(), 10) + } + // check endAt field -> json key endAt + if r.endAt != nil { + endAt := *r.endAt + + // assign parameter of endAt + // convert time.Time to seconds time stamp + params["endAt"] = strconv.FormatInt(endAt.Unix(), 10) + } + + return params, nil +} + +// GetParametersQuery converts the parameters from GetParameters into the url.Values format +func (r *GetKLinesRequest) GetParametersQuery() (url.Values, error) { + query := url.Values{} + + params, err := r.GetParameters() + if err != nil { + return query, err + } + + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParametersJSON converts the parameters from GetParameters into the JSON format +func (r *GetKLinesRequest) GetParametersJSON() ([]byte, error) { + params, err := r.GetParameters() + if err != nil { + return nil, err + } + + return json.Marshal(params) +} diff --git a/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_100_request_requestgen.go b/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_100_request_requestgen.go new file mode 100644 index 000000000..4a6f42cd0 --- /dev/null +++ b/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_100_request_requestgen.go @@ -0,0 +1,95 @@ +// Code generated by "requestgen -method GET -responseType .APIResponse -responseDataField Data -type GetOrderBookLevel2Depth100Request -url /api/v1/market/orderbook/level2_100 -responseDataType .OrderBook"; DO NOT EDIT. + +package kucoinapi + +import ( + "context" + "encoding/json" + "fmt" + "net/url" +) + +func (g *GetOrderBookLevel2Depth100Request) Symbol(symbol string) *GetOrderBookLevel2Depth100Request { + g.symbol = symbol + return g +} + +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (g *GetOrderBookLevel2Depth100Request) GetQueryParameters() (url.Values, error) { + var params = map[string]interface{}{} + // check symbol field -> json key symbol + symbol := g.symbol + + // assign parameter of symbol + params["symbol"] = symbol + + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (g *GetOrderBookLevel2Depth100Request) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} + + return params, nil +} + +// GetParametersQuery converts the parameters from GetParameters into the url.Values format +func (g *GetOrderBookLevel2Depth100Request) GetParametersQuery() (url.Values, error) { + query := url.Values{} + + params, err := g.GetParameters() + if err != nil { + return query, err + } + + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParametersJSON converts the parameters from GetParameters into the JSON format +func (g *GetOrderBookLevel2Depth100Request) GetParametersJSON() ([]byte, error) { + params, err := g.GetParameters() + if err != nil { + return nil, err + } + + return json.Marshal(params) +} + +func (g *GetOrderBookLevel2Depth100Request) Do(ctx context.Context) (*OrderBook, error) { + + // no body params + var params interface{} + query, err := g.GetQueryParameters() + if err != nil { + return nil, err + } + + req, err := g.client.NewRequest(ctx, "GET", "/api/v1/market/orderbook/level2_100", query, params) + if err != nil { + return nil, err + } + + response, err := g.client.SendRequest(req) + if err != nil { + return nil, err + } + + var apiResponse APIResponse + if err := response.DecodeJSON(&apiResponse); err != nil { + return nil, err + } + var data OrderBook + if err := json.Unmarshal(apiResponse.Data, &data); err != nil { + return nil, err + } + return &data, nil +} diff --git a/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_20_request_requestgen.go b/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_20_request_requestgen.go new file mode 100644 index 000000000..ce45dcfb8 --- /dev/null +++ b/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_20_request_requestgen.go @@ -0,0 +1,95 @@ +// Code generated by "requestgen -method GET -responseType .APIResponse -responseDataField Data -type GetOrderBookLevel2Depth20Request -url /api/v1/market/orderbook/level2_20 -responseDataType .OrderBook"; DO NOT EDIT. + +package kucoinapi + +import ( + "context" + "encoding/json" + "fmt" + "net/url" +) + +func (g *GetOrderBookLevel2Depth20Request) Symbol(symbol string) *GetOrderBookLevel2Depth20Request { + g.symbol = symbol + return g +} + +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (g *GetOrderBookLevel2Depth20Request) GetQueryParameters() (url.Values, error) { + var params = map[string]interface{}{} + // check symbol field -> json key symbol + symbol := g.symbol + + // assign parameter of symbol + params["symbol"] = symbol + + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (g *GetOrderBookLevel2Depth20Request) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} + + return params, nil +} + +// GetParametersQuery converts the parameters from GetParameters into the url.Values format +func (g *GetOrderBookLevel2Depth20Request) GetParametersQuery() (url.Values, error) { + query := url.Values{} + + params, err := g.GetParameters() + if err != nil { + return query, err + } + + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParametersJSON converts the parameters from GetParameters into the JSON format +func (g *GetOrderBookLevel2Depth20Request) GetParametersJSON() ([]byte, error) { + params, err := g.GetParameters() + if err != nil { + return nil, err + } + + return json.Marshal(params) +} + +func (g *GetOrderBookLevel2Depth20Request) Do(ctx context.Context) (*OrderBook, error) { + + // no body params + var params interface{} + query, err := g.GetQueryParameters() + if err != nil { + return nil, err + } + + req, err := g.client.NewRequest(ctx, "GET", "/api/v1/market/orderbook/level2_20", query, params) + if err != nil { + return nil, err + } + + response, err := g.client.SendRequest(req) + if err != nil { + return nil, err + } + + var apiResponse APIResponse + if err := response.DecodeJSON(&apiResponse); err != nil { + return nil, err + } + var data OrderBook + if err := json.Unmarshal(apiResponse.Data, &data); err != nil { + return nil, err + } + return &data, nil +} diff --git a/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_all_request_requestgen.go b/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_all_request_requestgen.go new file mode 100644 index 000000000..ed49e62c4 --- /dev/null +++ b/pkg/exchange/kucoin/kucoinapi/get_order_book_level_2_depth_all_request_requestgen.go @@ -0,0 +1,95 @@ +// Code generated by "requestgen -method GET -responseType .APIResponse -responseDataField Data -type GetOrderBookLevel2DepthAllRequest -url /api/v3/market/orderbook/level2 -responseDataType .OrderBook"; DO NOT EDIT. + +package kucoinapi + +import ( + "context" + "encoding/json" + "fmt" + "net/url" +) + +func (g *GetOrderBookLevel2DepthAllRequest) Symbol(symbol string) *GetOrderBookLevel2DepthAllRequest { + g.symbol = symbol + return g +} + +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (g *GetOrderBookLevel2DepthAllRequest) GetQueryParameters() (url.Values, error) { + var params = map[string]interface{}{} + // check symbol field -> json key symbol + symbol := g.symbol + + // assign parameter of symbol + params["symbol"] = symbol + + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (g *GetOrderBookLevel2DepthAllRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} + + return params, nil +} + +// GetParametersQuery converts the parameters from GetParameters into the url.Values format +func (g *GetOrderBookLevel2DepthAllRequest) GetParametersQuery() (url.Values, error) { + query := url.Values{} + + params, err := g.GetParameters() + if err != nil { + return query, err + } + + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParametersJSON converts the parameters from GetParameters into the JSON format +func (g *GetOrderBookLevel2DepthAllRequest) GetParametersJSON() ([]byte, error) { + params, err := g.GetParameters() + if err != nil { + return nil, err + } + + return json.Marshal(params) +} + +func (g *GetOrderBookLevel2DepthAllRequest) Do(ctx context.Context) (*OrderBook, error) { + + // no body params + var params interface{} + query, err := g.GetQueryParameters() + if err != nil { + return nil, err + } + + req, err := g.client.NewAuthenticatedRequest(ctx, "GET", "/api/v3/market/orderbook/level2", query, params) + if err != nil { + return nil, err + } + + response, err := g.client.SendRequest(req) + if err != nil { + return nil, err + } + + var apiResponse APIResponse + if err := response.DecodeJSON(&apiResponse); err != nil { + return nil, err + } + var data OrderBook + if err := json.Unmarshal(apiResponse.Data, &data); err != nil { + return nil, err + } + return &data, nil +} diff --git a/pkg/exchange/kucoin/kucoinapi/get_private_bullet_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/get_private_bullet_request_requestgen.go similarity index 100% rename from pkg/exchange/kucoin/kucoinapi/get_private_bullet_request_accessors.go rename to pkg/exchange/kucoin/kucoinapi/get_private_bullet_request_requestgen.go diff --git a/pkg/exchange/kucoin/kucoinapi/get_public_bullet_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/get_public_bullet_request_requestgen.go similarity index 79% rename from pkg/exchange/kucoin/kucoinapi/get_public_bullet_request_accessors.go rename to pkg/exchange/kucoin/kucoinapi/get_public_bullet_request_requestgen.go index a88f97a59..c8a173d4c 100644 --- a/pkg/exchange/kucoin/kucoinapi/get_public_bullet_request_accessors.go +++ b/pkg/exchange/kucoin/kucoinapi/get_public_bullet_request_requestgen.go @@ -8,18 +8,18 @@ import ( "net/url" ) -func (r *GetPublicBulletRequest) Do(ctx context.Context) (*Bullet, error) { +func (g *GetPublicBulletRequest) Do(ctx context.Context) (*Bullet, error) { // no body params var params interface{} query := url.Values{} - req, err := r.client.NewRequest(ctx, "POST", "/api/v1/bullet-public", query, params) + req, err := g.client.NewRequest(ctx, "POST", "/api/v1/bullet-public", query, params) if err != nil { return nil, err } - response, err := r.client.SendRequest(req) + response, err := g.client.SendRequest(req) if err != nil { return nil, err } diff --git a/pkg/exchange/kucoin/kucoinapi/list_orders_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/list_orders_request_requestgen.go similarity index 81% rename from pkg/exchange/kucoin/kucoinapi/list_orders_request_accessors.go rename to pkg/exchange/kucoin/kucoinapi/list_orders_request_requestgen.go index 99bc701a8..2606246c6 100644 --- a/pkg/exchange/kucoin/kucoinapi/list_orders_request_accessors.go +++ b/pkg/exchange/kucoin/kucoinapi/list_orders_request_requestgen.go @@ -45,9 +45,21 @@ func (r *ListOrdersRequest) EndAt(endAt time.Time) *ListOrdersRequest { return r } -func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (r *ListOrdersRequest) GetQueryParameters() (url.Values, error) { var params = map[string]interface{}{} + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} // check status field -> json key status if r.status != nil { status := *r.status @@ -64,7 +76,6 @@ func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of status params["status"] = status } - // check symbol field -> json key symbol if r.symbol != nil { symbol := *r.symbol @@ -72,7 +83,6 @@ func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of symbol params["symbol"] = symbol } - // check side field -> json key side if r.side != nil { side := *r.side @@ -89,7 +99,6 @@ func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of side params["side"] = side } - // check orderType field -> json key type if r.orderType != nil { orderType := *r.orderType @@ -97,7 +106,6 @@ func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of orderType params["type"] = orderType } - // check tradeType field -> json key tradeType if r.tradeType != nil { tradeType := *r.tradeType @@ -105,28 +113,27 @@ func (r *ListOrdersRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of tradeType params["tradeType"] = tradeType } - // check startAt field -> json key startAt if r.startAt != nil { startAt := *r.startAt // assign parameter of startAt - // convert time.Time to milliseconds time + // convert time.Time to milliseconds time stamp params["startAt"] = strconv.FormatInt(startAt.UnixNano()/int64(time.Millisecond), 10) } - // check endAt field -> json key endAt if r.endAt != nil { endAt := *r.endAt // assign parameter of endAt - // convert time.Time to milliseconds time + // convert time.Time to milliseconds time stamp params["endAt"] = strconv.FormatInt(endAt.UnixNano()/int64(time.Millisecond), 10) } return params, nil } +// GetParametersQuery converts the parameters from GetParameters into the url.Values format func (r *ListOrdersRequest) GetParametersQuery() (url.Values, error) { query := url.Values{} @@ -142,6 +149,7 @@ func (r *ListOrdersRequest) GetParametersQuery() (url.Values, error) { return query, nil } +// GetParametersJSON converts the parameters from GetParameters into the JSON format func (r *ListOrdersRequest) GetParametersJSON() ([]byte, error) { params, err := r.GetParameters() if err != nil { diff --git a/pkg/exchange/kucoin/kucoinapi/marketdata.go b/pkg/exchange/kucoin/kucoinapi/marketdata.go index 59894281f..cc93f501b 100644 --- a/pkg/exchange/kucoin/kucoinapi/marketdata.go +++ b/pkg/exchange/kucoin/kucoinapi/marketdata.go @@ -3,12 +3,11 @@ package kucoinapi import ( "context" "encoding/json" - "fmt" - "net/http" "net/url" "strconv" "time" + "github.com/c9s/requestgen" "github.com/pkg/errors" "github.com/valyala/fastjson" @@ -245,49 +244,46 @@ type OrderBook struct { Asks types.PriceVolumeSlice `json:"asks,omitempty"` } -func (s *MarketDataService) GetOrderBook(symbol string, depth int) (*OrderBook, error) { - params := url.Values{} - params["symbol"] = []string{symbol} +//go:generate -command GetRequest requestgen -method GET -responseType .APIResponse -responseDataField Data +//go:generate -command PostRequest requestgen -method GET -responseType .APIResponse -responseDataField Data - var req *http.Request - var err error +//go:generate GetRequest -type GetOrderBookLevel2Depth20Request -url "/api/v1/market/orderbook/level2_20" -responseDataType .OrderBook +type GetOrderBookLevel2Depth20Request struct { + client requestgen.APIClient + symbol string `param:"symbol,query"` +} +//go:generate GetRequest -type GetOrderBookLevel2Depth100Request -url "/api/v1/market/orderbook/level2_100" -responseDataType .OrderBook +type GetOrderBookLevel2Depth100Request struct { + client requestgen.APIClient + symbol string `param:"symbol,query"` +} + +//go:generate GetRequest -type GetOrderBookLevel2DepthAllRequest -url "/api/v3/market/orderbook/level2" -responseDataType .OrderBook +type GetOrderBookLevel2DepthAllRequest struct { + client requestgen.AuthenticatedAPIClient + symbol string `param:"symbol,query"` +} + +type OrderBookRequest interface { + Do(ctx context.Context) (*OrderBook, error) +} + +func (s *MarketDataService) NewGetOrderBookRequest(symbol string, depth int) OrderBookRequest { switch depth { - case 20, 100: - refURL := "/api/v1/market/orderbook/level2_" + strconv.Itoa(depth) - req, err = s.client.NewRequest(context.Background(), "GET", refURL, params, nil) - if err != nil { - return nil, err - } - - case 0: - refURL := "/api/v3/market/orderbook/level2" - req, err = s.client.NewAuthenticatedRequest(context.Background(), "GET", refURL, params, nil) - if err != nil { - return nil, err - } - - default: - return nil, fmt.Errorf("depth %d is not supported, use 20, 100 or 0", depth) + case 20: + return &GetOrderBookLevel2Depth20Request{client: s.client, symbol: symbol} + case 100: + return &GetOrderBookLevel2Depth100Request{client: s.client, symbol: symbol} } - response, err := s.client.SendRequest(req) - if err != nil { - return nil, err - } + return &GetOrderBookLevel2DepthAllRequest{client: s.client, symbol: symbol} +} - var apiResponse struct { - Code string `json:"code"` - Message string `json:"msg"` - Data *OrderBook `json:"data"` - } - - if err := response.DecodeJSON(&apiResponse); err != nil { - return nil, err - } - - return apiResponse.Data, nil +func (s *MarketDataService) GetOrderBook(symbol string, depth int) (*OrderBook, error) { + req := s.NewGetOrderBookRequest(symbol, depth) + return req.Do(context.Background()) } //go:generate requestgen -type GetKLinesRequest diff --git a/pkg/exchange/kucoin/kucoinapi/place_order_request_accessors.go b/pkg/exchange/kucoin/kucoinapi/place_order_request_requestgen.go similarity index 85% rename from pkg/exchange/kucoin/kucoinapi/place_order_request_accessors.go rename to pkg/exchange/kucoin/kucoinapi/place_order_request_requestgen.go index 75671b3bc..378597817 100644 --- a/pkg/exchange/kucoin/kucoinapi/place_order_request_accessors.go +++ b/pkg/exchange/kucoin/kucoinapi/place_order_request_requestgen.go @@ -49,9 +49,21 @@ func (r *PlaceOrderRequest) TimeInForce(timeInForce TimeInForceType) *PlaceOrder return r } -func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { +// GetQueryParameters builds and checks the query parameters and returns url.Values +func (r *PlaceOrderRequest) GetQueryParameters() (url.Values, error) { var params = map[string]interface{}{} + query := url.Values{} + for k, v := range params { + query.Add(k, fmt.Sprintf("%v", v)) + } + + return query, nil +} + +// GetParameters builds and checks the parameters and return the result in a map object +func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { + var params = map[string]interface{}{} // check clientOrderID field -> json key clientOid if r.clientOrderID != nil { clientOrderID := *r.clientOrderID @@ -70,7 +82,6 @@ func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of clientOrderID params["clientOid"] = clientOrderID } - // check symbol field -> json key symbol symbol := r.symbol @@ -80,7 +91,6 @@ func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of symbol params["symbol"] = symbol - // check tag field -> json key tag if r.tag != nil { tag := *r.tag @@ -88,19 +98,16 @@ func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of tag params["tag"] = tag } - // check side field -> json key side side := r.side // assign parameter of side params["side"] = side - // check orderType field -> json key ordType orderType := r.orderType // assign parameter of orderType params["ordType"] = orderType - // check size field -> json key size size := r.size @@ -110,7 +117,6 @@ func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of size params["size"] = size - // check price field -> json key price if r.price != nil { price := *r.price @@ -118,7 +124,6 @@ func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { // assign parameter of price params["price"] = price } - // check timeInForce field -> json key timeInForce if r.timeInForce != nil { timeInForce := *r.timeInForce @@ -134,6 +139,7 @@ func (r *PlaceOrderRequest) GetParameters() (map[string]interface{}, error) { return params, nil } +// GetParametersQuery converts the parameters from GetParameters into the url.Values format func (r *PlaceOrderRequest) GetParametersQuery() (url.Values, error) { query := url.Values{} @@ -149,6 +155,7 @@ func (r *PlaceOrderRequest) GetParametersQuery() (url.Values, error) { return query, nil } +// GetParametersJSON converts the parameters from GetParameters into the JSON format func (r *PlaceOrderRequest) GetParametersJSON() ([]byte, error) { params, err := r.GetParameters() if err != nil {