mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-22 23:05:15 +00:00
Merge pull request #157 from c9s/ftx/new-rest-everytime
fix: new rest client everytime
This commit is contained in:
commit
edff115c20
|
@ -21,8 +21,9 @@ const (
|
|||
var logger = logrus.WithField("exchange", "ftx")
|
||||
|
||||
type Exchange struct {
|
||||
rest *restRequest
|
||||
key, secret string
|
||||
subAccount string
|
||||
restEndpoint *url.URL
|
||||
}
|
||||
|
||||
func NewExchange(key, secret string, subAccount string) *Exchange {
|
||||
|
@ -30,17 +31,22 @@ func NewExchange(key, secret string, subAccount string) *Exchange {
|
|||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
rest := newRestRequest(&http.Client{Timeout: defaultHTTPTimeout}, u).Auth(key, secret)
|
||||
if subAccount != "" {
|
||||
rest.SubAccount(subAccount)
|
||||
}
|
||||
return &Exchange{
|
||||
rest: rest,
|
||||
restEndpoint: u,
|
||||
key: key,
|
||||
secret: secret,
|
||||
subAccount: subAccount,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *Exchange) newRest() *restRequest {
|
||||
r := newRestRequest(&http.Client{Timeout: defaultHTTPTimeout}, e.restEndpoint).Auth(e.key, e.secret)
|
||||
if len(e.subAccount) > 0 {
|
||||
r.SubAccount(e.subAccount)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (e *Exchange) Name() types.ExchangeName {
|
||||
return types.ExchangeFTX
|
||||
}
|
||||
|
@ -62,7 +68,7 @@ func (e *Exchange) QueryAccount(ctx context.Context) (*types.Account, error) {
|
|||
}
|
||||
|
||||
func (e *Exchange) QueryAccountBalances(ctx context.Context) (types.BalanceMap, error) {
|
||||
resp, err := e.rest.Balances(ctx)
|
||||
resp, err := e.newRest().Balances(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -105,7 +111,7 @@ func (e *Exchange) SubmitOrders(ctx context.Context, orders ...types.SubmitOrder
|
|||
if so.TimeInForce != "GTC" {
|
||||
return createdOrders, fmt.Errorf("unsupported TimeInForce %s. only support GTC", so.TimeInForce)
|
||||
}
|
||||
or, err := e.rest.PlaceOrder(ctx, PlaceOrderPayload{
|
||||
or, err := e.newRest().PlaceOrder(ctx, PlaceOrderPayload{
|
||||
Market: TrimUpperString(so.Symbol),
|
||||
Side: TrimLowerString(string(so.Side)),
|
||||
Price: so.Price,
|
||||
|
@ -133,7 +139,7 @@ func (e *Exchange) SubmitOrders(ctx context.Context, orders ...types.SubmitOrder
|
|||
|
||||
func (e *Exchange) QueryOpenOrders(ctx context.Context, symbol string) (orders []types.Order, err error) {
|
||||
// TODO: invoke open trigger orders
|
||||
resp, err := e.rest.OpenOrders(ctx, symbol)
|
||||
resp, err := e.newRest().OpenOrders(ctx, symbol)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ func TestExchange_QueryAccountBalances(t *testing.T) {
|
|||
ex := NewExchange("", "", "")
|
||||
serverURL, err := url.Parse(ts.URL)
|
||||
assert.NoError(t, err)
|
||||
ex.rest = newRestRequest(&http.Client{Timeout: defaultHTTPTimeout}, serverURL)
|
||||
ex.restEndpoint = serverURL
|
||||
resp, err := ex.QueryAccountBalances(context.Background())
|
||||
assert.NoError(t, err)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user