An open API service indexing awesome lists of open source software.

https://github.com/maurodelazeri/go-gdax-api

Go (golang) GDAX API https://docs.gdax.com/
https://github.com/maurodelazeri/go-gdax-api

gdax-api gdax-go

Last synced: over 1 year ago
JSON representation

Go (golang) GDAX API https://docs.gdax.com/

Awesome Lists containing this project

README

          

Go GDAX API -
========

## Summary

Go client for [GDAX](https://www.gdax.com)

https://docs.gdax.com/

## Installation

```sh
go get github.com/maurodelazeri/go-gdax-api
```

### Setup
How to create a client:

```go

import (
"os"
gdax "github.com/maurodelazeri/go-gdax-api"
)

secret := os.Getenv("COINBASE_SECRET")
key := os.Getenv("COINBASE_KEY")
passphrase := os.Getenv("COINBASE_PASSPHRASE")

// or unsafe hardcode way
secret = "exposedsecret"
key = "exposedkey"
passphrase = "exposedpassphrase"

client := gdax.NewClient(secret, key, passphrase)
```

### HTTP Settings
```go
import (
"net/http"
"time"
)

client.HttpClient = &http.Client {
Timeout: 15 * time.Second,
}
```

### Cursor
This library uses a cursor pattern so you don't have to keep track of pagination.

```go
var orders []gdax.Order
cursor = client.ListOrders()

for cursor.HasMore {
if err := cursor.NextPage(&orders); err != nil {
println(err.Error())
return
}

for _, o := range orders {
println(o.Id)
}
}

```

### Websockets
Listen for websocket messages

```go
import(
ws "github.com/gorilla/websocket"
)

var wsDialer ws.Dialer
wsConn, _, err := wsDialer.Dial("wss://ws-feed.gdax.com", nil)
if err != nil {
println(err.Error())
}

subscribe := gdax.Message{
Type: "subscribe",
Channels: []gdax.MessageChannel{
gdax.MessageChannel{
Name: "level2",
ProductIds: []string{
"BTC-USD",
},
},
},
}
if err := wsConn.WriteJSON(subscribe); err != nil {
println(err.Error())
}

message:= gdax.Message{}
for true {
if err := wsConn.ReadJSON(&message); err != nil {
println(err.Error())
break
}

if message.Type == "match" {
println("Got a match")
}
}

```

### Time
Results return coinbase time type which handles different types of time parsing that GDAX returns. This wraps the native go time type

```go
import(
"time"
gdax "github.com/maurodelazeri/go-gdax-api"
)

coinbaseTime := gdax.Time{}
println(time.Time(coinbaseTime).Day())
```

### Examples
This library supports all public and private endpoints

Get Accounts:
```go
accounts, err := client.GetAccounts()
if err != nil {
println(err.Error())
}

for _, a := range accounts {
println(a.Balance)
}
```

List Account Ledger:
```go
var ledger []gdax.LedgerEntry

accounts, err := client.GetAccounts()
if err != nil {
println(err.Error())
}

for _, a := range accounts {
cursor := client.ListAccountLedger(a.Id)
for cursor.HasMore {
if err := cursor.NextPage(&ledger); err != nil {
println(err.Error())
}

for _, e := range ledger {
println(e.Amount)
}
}
```

Create an Order:
```go
order := gdax.Order{
Price: 1.00,
Size: 1.00,
Side: "buy",
ProductId: "BTC-USD",
}

savedOrder, err := client.CreateOrder(&order)
if err != nil {
println(err.Error())
}

println(savedOrder.Id)
```

Transfer funds:
```go
transfer := gdax.Transfer {
Type: "deposit",
Amount: 1.00,
}

savedTransfer, err := client.CreateTransfer(&transfer)
if err != nil {
println(err.Error())
}
```

Get Trade history:
```go
var trades []gdax.Trade
cursor := client.ListTrades("BTC-USD")

for cursor.HasMore {
if err := cursor.NextPage(&trades); err != nil {
for _, t := range trades {
println(trade.CoinbaseId)
}
}
}
```