NOTICE:
PACKAGE IS CURRENTLY UNDER HEAVY DEVELOPMENT AND THERE IS NO GUARANTY FOR STABILITY.
DISCLAIMER:
This package is provided as-is, without any express or implied warranties. The user assumes all risks associated with the use of this package. The author and contributors to this package shall not be held liable for any damages arising from the use of this package, including but not limited to direct, indirect, incidental, or consequential damages. This package is not intended to be used as a substitute for professional financial advice. Users are responsible for verifying the accuracy and reliability of the data generated by this package. Use of this package constitutes acceptance of these terms and conditions.
Okex V5 Golang API
A complete golang wrapper for Okex V5 API. Pretty simple and easy to use. For more info about Okex V5 API read here.
go get github.com/amir-the-h/okex@v1.1.4-alpha
package main
import (
"context"
"github.com/amir-the-h/okex"
"github.com/amir-the-h/okex/api"
"github.com/amir-the-h/okex/events"
"github.com/amir-the-h/okex/events/public"
ws_public_requests "github.com/amir-the-h/okex/requests/ws/public"
"log"
)
func main() {
apiKey := "YOUR-API-KEY"
secretKey := "YOUR-SECRET-KEY"
passphrase := "YOUR-PASS-PHRASE"
dest := okex.NormalServer // The main API server
ctx := context.Background()
client, err := api.NewClient(ctx, apiKey, secretKey, passphrase, &dest)
if err != nil {
log.Fatalln(err)
}
log.Println("Starting")
errChan := make(chan *events.Error)
subChan := make(chan *events.Subscribe)
uSubChan := make(chan *events.Unsubscribe)
logChan := make(chan *events.Login)
sucChan := make(chan *events.Success)
client.Ws.SetChannels(errChan, subChan, uSubChan, logChan, sucChan)
obCh := make(chan *public.OrderBook)
err = client.Ws.Public.OrderBook(ws_public_requests.OrderBook{
InstID: "BTC-USD-SWAP",
Channel: "books",
}, obCh)
if err != nil {
log.Fatalln(err)
}
for {
select {
case <-logChan:
log.Print("[Authorized]")
case success := <-sucChan:
log.Printf("[SUCCESS]\t%+v", success)
case sub := <-subChan:
channel, _ := sub.Arg.Get("channel")
log.Printf("[Subscribed]\t%s", channel)
case uSub := <-uSubChan:
channel, _ := uSub.Arg.Get("channel")
log.Printf("[Unsubscribed]\t%s", channel)
case err := <-client.Ws.ErrChan:
log.Printf("[Error]\t%+v", err)
for _, datum := range err.Data {
log.Printf("[Error]\t\t%+v", datum)
}
case i := <-obCh:
ch, _ := i.Arg.Get("channel")
log.Printf("[Event]\t%s", ch)
for _, p := range i.Books {
for i := len(p.Asks) - 1; i >= 0; i-- {
log.Printf("\t\tAsk\t%+v", p.Asks[i])
}
for _, bid := range p.Bids {
log.Printf("\t\tBid\t%+v", bid)
}
}
case b := <-client.Ws.DoneChan:
log.Printf("[End]:\t%v", b)
return
}
}
}