Skip to content

Commit

Permalink
Add Bitstamp dynamic currency updater
Browse files Browse the repository at this point in the history
  • Loading branch information
thrasher- committed Mar 26, 2018
1 parent 7be56f1 commit 046b4dc
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 0 deletions.
9 changes: 9 additions & 0 deletions exchanges/bitstamp/bitstamp.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
9 changes: 9 additions & 0 deletions exchanges/bitstamp/bitstamp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{}
Expand Down
11 changes: 11 additions & 0 deletions exchanges/bitstamp/bitstamp_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
Expand Down
19 changes: 19 additions & 0 deletions exchanges/bitstamp/bitstamp_wrapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package bitstamp
import (
"errors"
"log"
"strings"

"github.com/thrasher-/gocryptotrader/common"
"github.com/thrasher-/gocryptotrader/currency/pair"
Expand All @@ -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
Expand Down

0 comments on commit 046b4dc

Please sign in to comment.