GetOrder returns order information based on exchange and order ID
(ctx context.Context, r *gctrpc.GetOrderRequest)
| 1076 | |
| 1077 | // GetOrder returns order information based on exchange and order ID |
| 1078 | func (s *RPCServer) GetOrder(ctx context.Context, r *gctrpc.GetOrderRequest) (*gctrpc.OrderDetails, error) { |
| 1079 | if r == nil { |
| 1080 | return nil, errInvalidArguments |
| 1081 | } |
| 1082 | |
| 1083 | if r.Pair == nil { |
| 1084 | return nil, errCurrencyPairUnset |
| 1085 | } |
| 1086 | |
| 1087 | a, err := asset.New(r.Asset) |
| 1088 | if err != nil { |
| 1089 | return nil, err |
| 1090 | } |
| 1091 | |
| 1092 | exch, err := s.GetExchangeByName(r.Exchange) |
| 1093 | if err != nil { |
| 1094 | return nil, err |
| 1095 | } |
| 1096 | |
| 1097 | pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter) |
| 1098 | |
| 1099 | err = checkParams(r.Exchange, exch, a, pair) |
| 1100 | if err != nil { |
| 1101 | return nil, err |
| 1102 | } |
| 1103 | |
| 1104 | result, err := s.OrderManager.GetOrderInfo(ctx, |
| 1105 | r.Exchange, |
| 1106 | r.OrderId, |
| 1107 | pair, |
| 1108 | a) |
| 1109 | if err != nil { |
| 1110 | return nil, fmt.Errorf("error whilst trying to retrieve info for order %s: %w", r.OrderId, err) |
| 1111 | } |
| 1112 | trades := make([]*gctrpc.TradeHistory, len(result.Trades)) |
| 1113 | for i := range result.Trades { |
| 1114 | trades[i] = &gctrpc.TradeHistory{ |
| 1115 | CreationTime: s.unixTimestamp(result.Trades[i].Timestamp), |
| 1116 | Id: result.Trades[i].TID, |
| 1117 | Price: result.Trades[i].Price, |
| 1118 | Amount: result.Trades[i].Amount, |
| 1119 | Exchange: result.Trades[i].Exchange, |
| 1120 | AssetType: result.Trades[i].Type.String(), |
| 1121 | OrderSide: result.Trades[i].Side.String(), |
| 1122 | Fee: result.Trades[i].Fee, |
| 1123 | Total: result.Trades[i].Total, |
| 1124 | } |
| 1125 | } |
| 1126 | |
| 1127 | var creationTime, updateTime string |
| 1128 | if !result.Date.IsZero() { |
| 1129 | creationTime = result.Date.Format(common.SimpleTimeFormatWithTimezone) |
| 1130 | } |
| 1131 | if !result.LastUpdated.IsZero() { |
| 1132 | updateTime = result.LastUpdated.Format(common.SimpleTimeFormatWithTimezone) |
| 1133 | } |
| 1134 | |
| 1135 | return &gctrpc.OrderDetails{ |