Skip to content

Commit

Permalink
feat(bigone): add GetOrders
Browse files Browse the repository at this point in the history
  • Loading branch information
Akagi201 committed Dec 25, 2017
1 parent 850ebc5 commit 3276f4d
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 1 deletion.
66 changes: 66 additions & 0 deletions bigone/bigone.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,3 +262,69 @@ func (c *Client) Trade(ctx context.Context, quote string, base string, side stri

return orderID, err
}

// GetOrder Check an order's status, for GET /api/v3/order
func (c *Client) GetOrder(ctx context.Context, quote string, base string, orderID string) (*model.BigONEOrder, error) {
req, err := c.newPrivateRequest(ctx, "GET", "orders/"+orderID, nil, nil)
if err != nil {
return nil, err
}

body, err := c.getResponse(req)
if err != nil {
return nil, err
}

log.Debugf("Response body: %v", string(body))

var order model.BigONEOrder
order.ID = gjson.GetBytes(body, "data.order_id").String()
order.Type = gjson.GetBytes(body, "data.order_type").String()
order.Side = gjson.GetBytes(body, "data.order_side").String()
order.Status = gjson.GetBytes(body, "data.order_state").String()
order.Price = cast.ToFloat64(gjson.GetBytes(body, "data.price").String())
order.Amount = cast.ToFloat64(gjson.GetBytes(body, "data.amount").String())
order.DealAmount = cast.ToFloat64(gjson.GetBytes(body, "data.filled_amount").String())
order.Time = cast.ToTime(gjson.GetBytes(body, "data.updated_at").String())
order.Raw = string(body)

return &order, nil
}

// GetOrders Get all open orders on a symbol, for GET /api/v3/openOrders
func (c *Client) GetOrders(ctx context.Context, quote string, base string, limit int64) ([]model.BigONEOrder, error) {
v := url.Values{}
v.Set("market", strings.ToUpper(quote)+"-"+strings.ToUpper(base))
v.Set("limit", cast.ToString(limit))

req, err := c.newPrivateRequest(ctx, "GET", "orders", v, nil)
if err != nil {
return nil, err
}

body, err := c.getResponse(req)
if err != nil {
return nil, err
}

log.Debugf("Response body: %v", string(body))

var order model.BigONEOrder
var orders []model.BigONEOrder

gjson.GetBytes(body, "data").ForEach(func(key, value gjson.Result) bool {
order.ID = value.Get("data.order_id").String()
order.Type = value.Get("data.order_type").String()
order.Side = value.Get("data.order_side").String()
order.Status = value.Get("data.order_state").String()
order.Price = cast.ToFloat64(value.Get("data.price").String())
order.Amount = cast.ToFloat64(value.Get("data.amount").String())
order.DealAmount = cast.ToFloat64(value.Get("data.filled_amount").String())
order.Time = cast.ToTime(value.Get("data.updated_at").String())
order.Raw = string(body)

orders = append(orders, order)
return true // keep iterating
})
return orders, nil
}
14 changes: 13 additions & 1 deletion cmd/trader/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ func main() {

{
// big.one
c := bigone.New("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDU3MDYxNDksImp0aSI6Ijc0NmFhY2RhLTcwODctNDJhZS1iZjc4LWZhYzM2ZmQ3NjRjOCJ9.yNWpO5nGNLtR4EC-gUE9TDz-5QHG6GV3VRg-g0BntCM:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDU3MDYxNDl9.yHjpYvjjCpSG-86pt7YQvqjKD6MvkGxvFAi2HVeTLRQ")
c := bigone.New("")
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

Expand Down Expand Up @@ -494,6 +494,18 @@ func main() {
log.Fatalf("big.one trade eth-btc failed, err: %v", err)
}
log.Infof("big.one trade eth-btc success, order id: %v", id)

order, err := c.GetOrder(ctx, "eth", "btc", id)
if err != nil {
log.Fatalf("big.one get order eth-btc failed, err: %v", err)
}
log.Infof("big.one get order eth-btc success, order id: %v", order)

orders, err := c.GetOrders(ctx, "eth", "btc", 10)
if err != nil {
log.Fatalf("big.one get orders eth-btc failed, err: %v", err)
}
log.Infof("big.one get orders eth-btc success, orders: %+v", orders)
}
}
}
13 changes: 13 additions & 0 deletions model/vendor.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,16 @@ type BigONETrade struct {
Amount float64
Time time.Time
}

// BigONE Order
type BigONEOrder struct {
ID string
Amount float64
DealAmount float64
Price float64
Status string
Type string
Side string
Time time.Time
Raw string
}

0 comments on commit 3276f4d

Please sign in to comment.