mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
Add Bitstamp dynamic currency updater
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user