mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-31 23:16:54 +00:00
Implementation of Exchange GetOrder through GRPC for Coinbase (#453)
* fix 440: SubmitOrder and CB-ACCESS-TIMESTAMP value * removed gctcli executable and added it to gitignore * implemented GetOrderInfo * getOrder also has trades attached to an order * getOrder also has trades attached to an order * fix 440: SubmitOrder and CB-ACCESS-TIMESTAMP value * removed gctcli executable and added it to gitignore * fix 440: SubmitOrder and CB-ACCESS-TIMESTAMP value * removed gctcli executable and added it to gitignore * minor * go lint fixes * removed clutter * fixed Amount, Executed Amount, Remaining Amount * removed default value declarations * removed useless nil chceck * iteration rewritten go style from java style * returning error if GetFills fails * returning error if GetOrderInfo fails * ExecutedAmont value is FilledSize * added TODO to fix asset type * chnages after merging #446 * range without copy value, using index * removed useless slice initialisation * couple of nits from code review * fix indentation * Update rpc.proto Fixes indentation Co-authored-by: Adrian Gallagher <thrasher@addictionsoftware.com>
This commit is contained in:
@@ -454,8 +454,65 @@ func (c *CoinbasePro) CancelAllOrders(_ *order.Cancel) (order.CancelAllResponse,
|
||||
|
||||
// GetOrderInfo returns information on a current open order
|
||||
func (c *CoinbasePro) GetOrderInfo(orderID string) (order.Detail, error) {
|
||||
var orderDetail order.Detail
|
||||
return orderDetail, common.ErrNotYetImplemented
|
||||
genOrderDetail, errGo := c.GetOrder(orderID)
|
||||
if errGo != nil {
|
||||
return order.Detail{}, fmt.Errorf("error retrieving order %s : %s", orderID, errGo)
|
||||
}
|
||||
od, errOd := time.Parse(time.RFC3339, genOrderDetail.DoneAt)
|
||||
if errOd != nil {
|
||||
return order.Detail{}, fmt.Errorf("error parsing order done at time: %s", errOd)
|
||||
}
|
||||
os, errOs := order.StringToOrderStatus(genOrderDetail.Status)
|
||||
if errOs != nil {
|
||||
return order.Detail{}, fmt.Errorf("error parsing order status: %s", errOs)
|
||||
}
|
||||
tt, errOt := order.StringToOrderType(genOrderDetail.Type)
|
||||
if errOt != nil {
|
||||
return order.Detail{}, fmt.Errorf("error parsing order type: %s", errOt)
|
||||
}
|
||||
ss, errOss := order.StringToOrderSide(genOrderDetail.Side)
|
||||
if errOss != nil {
|
||||
return order.Detail{}, fmt.Errorf("error parsing order side: %s", errOss)
|
||||
}
|
||||
response := order.Detail{
|
||||
Exchange: c.GetName(),
|
||||
ID: genOrderDetail.ID,
|
||||
Pair: currency.NewPairDelimiter(genOrderDetail.ProductID, "-"),
|
||||
Side: ss,
|
||||
Type: tt,
|
||||
Date: od,
|
||||
Status: os,
|
||||
Price: genOrderDetail.Price,
|
||||
Amount: genOrderDetail.Size,
|
||||
ExecutedAmount: genOrderDetail.FilledSize,
|
||||
RemainingAmount: genOrderDetail.Size - genOrderDetail.FilledSize,
|
||||
Fee: genOrderDetail.FillFees,
|
||||
}
|
||||
fillResponse, errGF := c.GetFills(orderID, genOrderDetail.ProductID)
|
||||
if errGF != nil {
|
||||
return response, fmt.Errorf("error retrieving the order fills: %s", errGF)
|
||||
}
|
||||
for i := range fillResponse {
|
||||
trSi, errTSi := order.StringToOrderSide(fillResponse[i].Side)
|
||||
if errTSi != nil {
|
||||
return response, fmt.Errorf("error parsing order Side: %s", errTSi)
|
||||
}
|
||||
td, errTd := time.Parse(time.RFC3339, fillResponse[i].CreatedAt)
|
||||
if errTd != nil {
|
||||
return response, fmt.Errorf("error parsing trade created time: %s", errTd)
|
||||
}
|
||||
response.Trades = append(response.Trades, order.TradeHistory{
|
||||
Timestamp: td,
|
||||
TID: string(fillResponse[i].TradeID),
|
||||
Price: fillResponse[i].Price,
|
||||
Amount: fillResponse[i].Size,
|
||||
Exchange: c.GetName(),
|
||||
Type: tt,
|
||||
Side: trSi,
|
||||
Fee: fillResponse[i].Fee,
|
||||
})
|
||||
}
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// GetDepositAddress returns a deposit address for a specified currency
|
||||
|
||||
@@ -206,6 +206,7 @@ const (
|
||||
Expired Status = "EXPIRED"
|
||||
Hidden Status = "HIDDEN"
|
||||
UnknownStatus Status = "UNKNOWN"
|
||||
Open Status = "OPEN"
|
||||
)
|
||||
|
||||
// Type enforces a standard for order types across the code base
|
||||
|
||||
@@ -615,6 +615,8 @@ func StringToOrderStatus(status string) (Status, error) {
|
||||
case strings.EqualFold(status, PartiallyCancelled.String()),
|
||||
strings.EqualFold(status, "partially cancelled"):
|
||||
return PartiallyCancelled, nil
|
||||
case strings.EqualFold(status, Open.String()):
|
||||
return Open, nil
|
||||
case strings.EqualFold(status, Cancelled.String()):
|
||||
return Cancelled, nil
|
||||
case strings.EqualFold(status, PendingCancel.String()),
|
||||
|
||||
Reference in New Issue
Block a user