Add Bitstamp dynamic currency updater

This commit is contained in:
Adrian Gallagher
2018-03-01 16:05:28 +11:00
parent 7be56f1f8c
commit 046b4dc348
4 changed files with 48 additions and 0 deletions

View File

@@ -46,6 +46,7 @@ const (
bitstampAPIXrpWithdrawal = "xrp_withdrawal"
bitstampAPIXrpDeposit = "xrp_address"
bitstampAPIReturnType = "string"
bitstampAPITradingPairsInfo = "trading-pairs-info"
)
// Bitstamp is the overarching type across the bitstamp package
@@ -188,6 +189,14 @@ func (b *Bitstamp) GetOrderbook(currency string) (Orderbook, error) {
return orderbook, nil
}
// GetTradingPairs returns a list of trading pairs which Bitstamp
// currently supports
func (b *Bitstamp) GetTradingPairs() ([]TradingPair, error) {
var result []TradingPair
path := fmt.Sprintf("%s/v%s/%s", bitstampAPIURL, bitstampAPIVersion, bitstampAPITradingPairsInfo)
return result, common.SendHTTPGetRequest(path, true, b.Verbose, &result)
}
// GetTransactions returns transaction information
// value paramater ["time"] = "minute", "hour", "day" will collate your
// response into time intervals. Implementation of value in test code.

View File

@@ -110,6 +110,15 @@ func TestGetOrderbook(t *testing.T) {
}
}
func TestGetTradingPairs(t *testing.T) {
t.Parallel()
b := Bitstamp{}
_, err := b.GetTradingPairs()
if err != nil {
t.Error("Test Failed - GetTradingPairs() error", err)
}
}
func TestGetTransactions(t *testing.T) {
t.Parallel()
b := Bitstamp{}

View File

@@ -26,6 +26,17 @@ type Orderbook struct {
Asks []OrderbookBase
}
// TradingPair holds trading pair information
type TradingPair struct {
Name string `json:"name"`
URLSymbol string `json:"url_symbol"`
BaseDecimals int `json:"base_decimals"`
CounterDecimals int `json:"counter_decimals"`
MinimumOrder string `json:"minimum_order"`
Trading string `json:"trading"`
Description string `json:"description"`
}
// Transactions holds transaction data
type Transactions struct {
Date int64 `json:"date,string"`

View File

@@ -3,6 +3,7 @@ package bitstamp
import (
"errors"
"log"
"strings"
"github.com/thrasher-/gocryptotrader/common"
"github.com/thrasher-/gocryptotrader/currency/pair"
@@ -27,6 +28,24 @@ func (b *Bitstamp) Run() {
if b.Websocket {
go b.PusherClient()
}
pairs, err := b.GetTradingPairs()
if err != nil {
log.Printf("%s failed to get trading pairs. Err: %s", b.Name, err)
} else {
var currencies []string
for x := range pairs {
if pairs[x].Trading != "Enabled" {
continue
}
pair := strings.Split(pairs[x].Name, "/")
currencies = append(currencies, pair[0]+pair[1])
}
err = b.UpdateAvailableCurrencies(currencies, false)
if err != nil {
log.Printf("%s Failed to update available currencies.\n", b.Name)
}
}
}
// UpdateTicker updates and returns the ticker for a currency pair