mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-08 15:11:07 +00:00
Daily engine changes
1) Although gRPC does server side validation currently, validate basic things on gctcli before relaying the request to the gRPC server 2) Make pair format consistent for the exchange sycner 3) Fix OKEX ticker failure due to thinking futures info is authenticated 4) Start filling out config tests 5) Extend timeout for golangci config so that AppVeyor has time to complete (Travis is fine) 6) Add IsSupported exchange func for easy lookup
This commit is contained in:
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
@@ -82,12 +83,6 @@ func enableSubsystem(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var subsystemName string
|
||||
if c.IsSet("subsystem") {
|
||||
subsystemName = c.String("subsystem")
|
||||
@@ -95,6 +90,16 @@ func enableSubsystem(c *cli.Context) error {
|
||||
subsystemName = c.Args().First()
|
||||
}
|
||||
|
||||
if subsystemName == "" {
|
||||
return errors.New("invalid subsystem supplied")
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.EnableSubsystem(context.Background(),
|
||||
&gctrpc.GenericSubsystemRequest{
|
||||
@@ -129,12 +134,6 @@ func disableSubsystem(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var subsystemName string
|
||||
if c.IsSet("subsystem") {
|
||||
subsystemName = c.String("subsystem")
|
||||
@@ -142,6 +141,16 @@ func disableSubsystem(c *cli.Context) error {
|
||||
subsystemName = c.Args().First()
|
||||
}
|
||||
|
||||
if subsystemName == "" {
|
||||
return errors.New("invalid subsystem supplied")
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.DisableSubsystem(context.Background(),
|
||||
&gctrpc.GenericSubsystemRequest{
|
||||
@@ -268,12 +277,6 @@ func enableExchange(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
if c.IsSet("exchange") {
|
||||
exchangeName = c.String("exchange")
|
||||
@@ -281,6 +284,16 @@ func enableExchange(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.EnableExchange(context.Background(),
|
||||
&gctrpc.GenericExchangeNameRequest{
|
||||
@@ -315,12 +328,6 @@ func disableExchange(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
if c.IsSet("exchange") {
|
||||
exchangeName = c.String("exchange")
|
||||
@@ -328,6 +335,16 @@ func disableExchange(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.DisableExchange(context.Background(),
|
||||
&gctrpc.GenericExchangeNameRequest{
|
||||
@@ -362,12 +379,6 @@ func getExchangeOTPCode(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
if c.IsSet("exchange") {
|
||||
exchangeName = c.String("exchange")
|
||||
@@ -375,6 +386,16 @@ func getExchangeOTPCode(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetExchangeOTPCode(context.Background(),
|
||||
&gctrpc.GenericExchangeNameRequest{
|
||||
@@ -434,12 +455,6 @@ func getExchangeInfo(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
if c.IsSet("exchange") {
|
||||
exchangeName = c.String("exchange")
|
||||
@@ -447,6 +462,16 @@ func getExchangeInfo(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetExchangeInfo(context.Background(),
|
||||
&gctrpc.GenericExchangeNameRequest{
|
||||
@@ -489,12 +514,6 @@ func getTicker(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var currencyPair string
|
||||
var assetType string
|
||||
@@ -505,23 +524,33 @@ func getTicker(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
currencyPair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("asset") {
|
||||
assetType = c.String("asset")
|
||||
} else {
|
||||
assetType = c.Args().Get(2)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
defer conn.Close()
|
||||
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetTicker(context.Background(),
|
||||
&gctrpc.GetTickerRequest{
|
||||
@@ -545,7 +574,7 @@ func getTicker(c *cli.Context) error {
|
||||
|
||||
var getTickersCommand = cli.Command{
|
||||
Name: "gettickers",
|
||||
Usage: "gets all tickers for all enabled exchanes and currency pairs",
|
||||
Usage: "gets all tickers for all enabled exchanges and currency pairs",
|
||||
Action: getTickers,
|
||||
}
|
||||
|
||||
@@ -593,12 +622,6 @@ func getOrderbook(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var currencyPair string
|
||||
var assetType string
|
||||
@@ -609,23 +632,33 @@ func getOrderbook(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
currencyPair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("asset") {
|
||||
assetType = c.String("asset")
|
||||
} else {
|
||||
assetType = c.Args().Get(2)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
defer conn.Close()
|
||||
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetOrderbook(context.Background(),
|
||||
&gctrpc.GetOrderbookRequest{
|
||||
@@ -649,7 +682,7 @@ func getOrderbook(c *cli.Context) error {
|
||||
|
||||
var getOrderbooksCommand = cli.Command{
|
||||
Name: "getorderbooks",
|
||||
Usage: "gets all orderbooks for all enabled exchanes and currency pairs",
|
||||
Usage: "gets all orderbooks for all enabled exchanges and currency pairs",
|
||||
Action: getOrderbooks,
|
||||
}
|
||||
|
||||
@@ -689,12 +722,6 @@ func getAccountInfo(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchange string
|
||||
if c.IsSet("exchange") {
|
||||
exchange = c.String("exchange")
|
||||
@@ -702,6 +729,16 @@ func getAccountInfo(c *cli.Context) error {
|
||||
exchange = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchange) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetAccountInfo(context.Background(),
|
||||
&gctrpc.GetAccountInfoRequest{
|
||||
@@ -1009,12 +1046,6 @@ var getOrdersCommand = cli.Command{
|
||||
}
|
||||
|
||||
func getOrders(c *cli.Context) error {
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var assetType string
|
||||
var currencyPair string
|
||||
@@ -1025,6 +1056,10 @@ func getOrders(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("asset_type") {
|
||||
assetType = c.String("asset_type")
|
||||
} else {
|
||||
@@ -1040,8 +1075,14 @@ func getOrders(c *cli.Context) error {
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetOrders(context.Background(), &gctrpc.GetOrdersRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1083,12 +1124,6 @@ func getOrder(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var orderID string
|
||||
|
||||
@@ -1098,12 +1133,22 @@ func getOrder(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("order_id") {
|
||||
orderID = c.String("order_id")
|
||||
} else {
|
||||
orderID = c.Args().Get(1)
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.GetOrder(context.Background(), &gctrpc.GetOrderRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1120,7 +1165,7 @@ func getOrder(c *cli.Context) error {
|
||||
var submitOrderCommand = cli.Command{
|
||||
Name: "submitorder",
|
||||
Usage: "submit order submits an exchange order",
|
||||
ArgsUsage: "<exchange> <currency_pair> <side> <order_type> <amount> <price> <client_id>",
|
||||
ArgsUsage: "<exchange> <pair> <side> <order_type> <amount> <price> <client_id>",
|
||||
Action: submitOrder,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
@@ -1128,7 +1173,7 @@ var submitOrderCommand = cli.Command{
|
||||
Usage: "the exchange to submit the order for",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "currency_pair",
|
||||
Name: "pair",
|
||||
Usage: "the currency pair",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -1160,12 +1205,6 @@ func submitOrder(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var currencyPair string
|
||||
var orderSide string
|
||||
@@ -1180,12 +1219,20 @@ func submitOrder(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if c.IsSet("currency_pair") {
|
||||
currencyPair = c.String("currency_pair")
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
currencyPair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("side") {
|
||||
orderSide = c.String("side")
|
||||
} else {
|
||||
@@ -1216,11 +1263,13 @@ func submitOrder(c *cli.Context) error {
|
||||
clientID = c.Args().Get(6)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
defer conn.Close()
|
||||
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.SubmitOrder(context.Background(), &gctrpc.SubmitOrderRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1246,7 +1295,7 @@ func submitOrder(c *cli.Context) error {
|
||||
var simulateOrderCommand = cli.Command{
|
||||
Name: "simulateorder",
|
||||
Usage: "simulate order simulates an exchange order",
|
||||
ArgsUsage: "<exchange> <currency_pair> <side> <amount>",
|
||||
ArgsUsage: "<exchange> <pair> <side> <amount>",
|
||||
Action: simulateOrder,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
@@ -1254,7 +1303,7 @@ var simulateOrderCommand = cli.Command{
|
||||
Usage: "the exchange to simulate the order for",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "currency_pair",
|
||||
Name: "pair",
|
||||
Usage: "the currency pair",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -1274,12 +1323,6 @@ func simulateOrder(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var currencyPair string
|
||||
var orderSide string
|
||||
@@ -1291,12 +1334,20 @@ func simulateOrder(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if c.IsSet("currency_pair") {
|
||||
currencyPair = c.String("currency_pair")
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
currencyPair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("side") {
|
||||
orderSide = c.String("side")
|
||||
} else {
|
||||
@@ -1309,11 +1360,13 @@ func simulateOrder(c *cli.Context) error {
|
||||
amount, _ = strconv.ParseFloat(c.Args().Get(3), 64)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
defer conn.Close()
|
||||
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.SimulateOrder(context.Background(), &gctrpc.SimulateOrderRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1336,7 +1389,7 @@ func simulateOrder(c *cli.Context) error {
|
||||
var whaleBombCommand = cli.Command{
|
||||
Name: "whalebomb",
|
||||
Usage: "whale bomb finds the amount required to reach a price target",
|
||||
ArgsUsage: "<exchange> <currency_pair> <side> <price>",
|
||||
ArgsUsage: "<exchange> <pair> <side> <price>",
|
||||
Action: whaleBomb,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
@@ -1344,7 +1397,7 @@ var whaleBombCommand = cli.Command{
|
||||
Usage: "the exchange to whale bomb",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "currency_pair",
|
||||
Name: "pair",
|
||||
Usage: "the currency pair",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -1364,12 +1417,6 @@ func whaleBomb(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var currencyPair string
|
||||
var orderSide string
|
||||
@@ -1381,12 +1428,20 @@ func whaleBomb(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if c.IsSet("currency_pair") {
|
||||
currencyPair = c.String("currency_pair")
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
currencyPair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("side") {
|
||||
orderSide = c.String("side")
|
||||
} else {
|
||||
@@ -1399,11 +1454,13 @@ func whaleBomb(c *cli.Context) error {
|
||||
price, _ = strconv.ParseFloat(c.Args().Get(3), 64)
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
defer conn.Close()
|
||||
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.WhaleBomb(context.Background(), &gctrpc.WhaleBombRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1426,7 +1483,7 @@ func whaleBomb(c *cli.Context) error {
|
||||
var cancelOrderCommand = cli.Command{
|
||||
Name: "cancelorder",
|
||||
Usage: "cancel order cancels an exchange order",
|
||||
ArgsUsage: "<exchange> <account_id> <order_id> <currency_pair> <asset_type> <wallet_address> <side>",
|
||||
ArgsUsage: "<exchange> <account_id> <order_id> <pair> <asset_type> <wallet_address> <side>",
|
||||
Action: cancelOrder,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
@@ -1442,7 +1499,7 @@ var cancelOrderCommand = cli.Command{
|
||||
Usage: "the order id",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "currency_pair",
|
||||
Name: "pair",
|
||||
Usage: "the currency pair to cancel the order for",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -1466,12 +1523,6 @@ func cancelOrder(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
var accountID string
|
||||
var orderID string
|
||||
@@ -1486,6 +1537,10 @@ func cancelOrder(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("order_id") {
|
||||
orderID = c.String("order_id")
|
||||
} else {
|
||||
@@ -1496,8 +1551,8 @@ func cancelOrder(c *cli.Context) error {
|
||||
accountID = c.String("account_id")
|
||||
}
|
||||
|
||||
if c.IsSet("currency_pair") {
|
||||
currencyPair = c.String("currency_pair")
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
}
|
||||
|
||||
if c.IsSet("asset_type") {
|
||||
@@ -1520,6 +1575,12 @@ func cancelOrder(c *cli.Context) error {
|
||||
p = currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.CancelOrder(context.Background(), &gctrpc.CancelOrderRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1556,12 +1617,6 @@ var cancelAllOrdersCommand = cli.Command{
|
||||
}
|
||||
|
||||
func cancelAllOrders(c *cli.Context) error {
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
var exchangeName string
|
||||
if c.IsSet("exchange") {
|
||||
exchangeName = c.String("exchange")
|
||||
@@ -1569,6 +1624,19 @@ func cancelAllOrders(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
// exchange name is an optional param
|
||||
if exchangeName != "" {
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.CancelAllOrders(context.Background(), &gctrpc.CancelAllOrdersRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1607,7 +1675,7 @@ func getEvents(_ *cli.Context) error {
|
||||
var addEventCommand = cli.Command{
|
||||
Name: "addevent",
|
||||
Usage: "adds an event",
|
||||
ArgsUsage: "<exchange> <item> <condition> <price> <check_bids> <check_bids_and_asks> <orderbook_amount> <currency_pair> <asset_type> <action>",
|
||||
ArgsUsage: "<exchange> <item> <condition> <price> <check_bids> <check_bids_and_asks> <orderbook_amount> <pair> <asset_type> <action>",
|
||||
Action: addEvent,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
@@ -1639,7 +1707,7 @@ var addEventCommand = cli.Command{
|
||||
Usage: "the orderbook amount to trigger the event",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "currency_pair",
|
||||
Name: "pair",
|
||||
Usage: "the currency pair",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -1704,8 +1772,8 @@ func addEvent(c *cli.Context) error {
|
||||
orderbookAmount = c.Float64("orderbook_amount")
|
||||
}
|
||||
|
||||
if c.IsSet("currency_pair") {
|
||||
currencyPair = c.String("currency_pair")
|
||||
if c.IsSet("pair") {
|
||||
currencyPair = c.String("pair")
|
||||
} else {
|
||||
return fmt.Errorf("currency pair is required")
|
||||
}
|
||||
@@ -1720,17 +1788,17 @@ func addEvent(c *cli.Context) error {
|
||||
return fmt.Errorf("action is required")
|
||||
}
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
if !validPair(currencyPair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
p := currency.NewPairDelimiter(currencyPair, pairDelimiter)
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.AddEvent(context.Background(), &gctrpc.AddEventRequest{
|
||||
Exchange: exchangeName,
|
||||
@@ -1831,6 +1899,10 @@ func getCryptocurrencyDepositAddresses(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
conn, err := setupClient()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1880,6 +1952,10 @@ func getCryptocurrencyDepositAddress(c *cli.Context) error {
|
||||
exchangeName = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchangeName) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("cryptocurrency") {
|
||||
cryptocurrency = c.String("cryptocurrency")
|
||||
} else {
|
||||
@@ -2086,6 +2162,10 @@ func getExchangePairs(c *cli.Context) error {
|
||||
exchange = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchange) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("asset") {
|
||||
asset = c.String("asset")
|
||||
} else {
|
||||
@@ -2099,7 +2179,6 @@ func getExchangePairs(c *cli.Context) error {
|
||||
defer conn.Close()
|
||||
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
|
||||
result, err := client.GetExchangePairs(context.Background(),
|
||||
&gctrpc.GetExchangePairsRequest{
|
||||
Exchange: exchange,
|
||||
@@ -2150,12 +2229,20 @@ func enableExchangePair(c *cli.Context) error {
|
||||
exchange = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchange) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
pair = c.String("pair")
|
||||
} else {
|
||||
pair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(pair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("asset") {
|
||||
asset = c.String("asset")
|
||||
} else {
|
||||
@@ -2168,10 +2255,6 @@ func enableExchangePair(c *cli.Context) error {
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
if !validPair(pair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
p := currency.NewPairDelimiter(pair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.EnableExchangePair(context.Background(),
|
||||
@@ -2229,12 +2312,20 @@ func disableExchangePair(c *cli.Context) error {
|
||||
exchange = c.Args().First()
|
||||
}
|
||||
|
||||
if !validExchange(exchange) {
|
||||
return errInvalidExchange
|
||||
}
|
||||
|
||||
if c.IsSet("pair") {
|
||||
pair = c.String("pair")
|
||||
} else {
|
||||
pair = c.Args().Get(1)
|
||||
}
|
||||
|
||||
if !validPair(pair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
if c.IsSet("asset") {
|
||||
asset = c.String("asset")
|
||||
} else {
|
||||
@@ -2247,10 +2338,6 @@ func disableExchangePair(c *cli.Context) error {
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
if !validPair(pair) {
|
||||
return errInvalidPair
|
||||
}
|
||||
|
||||
p := currency.NewPairDelimiter(pair, pairDelimiter)
|
||||
client := gctrpc.NewGoCryptoTraderClient(conn)
|
||||
result, err := client.DisableExchangePair(context.Background(),
|
||||
|
||||
@@ -3,12 +3,19 @@ package main
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
)
|
||||
|
||||
var (
|
||||
errInvalidPair = errors.New("invalid currency pair supplied")
|
||||
errInvalidPair = errors.New("invalid currency pair supplied")
|
||||
errInvalidExchange = errors.New("invalid exchange supplied")
|
||||
)
|
||||
|
||||
func validPair(pair string) bool {
|
||||
return strings.Contains(pair, pairDelimiter)
|
||||
}
|
||||
|
||||
func validExchange(exch string) bool {
|
||||
return exchange.IsSupported(exch)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user