Untitled
unknown
plain_text
4 years ago
3.7 kB
11
Indexable
package main
import (
ws "github.com/gorilla/websocket"
"github.com/prometheus/common/log"
)
type Product struct {
ID string `json:"id"`
BaseCurrency string `json:"base_currency"`
QuoteCurrency string `json:"quote_currency"`
BaseMinSize string `json:"base_min_size"`
BaseMaxSize string `json:"base_max_size"`
QuoteIncrement string `json:"quote_increment"`
BaseIncrement string `json:"base_increment"`
DisplayName string `json:"display_name"`
MinMarketFunds string `json:"min_market_funds"`
MaxMarketFunds string `json:"max_market_funds"`
MarginEnabled bool `json:"margin_enabled"`
PostOnly bool `json:"post_only"`
LimitOnly bool `json:"limit_only"`
CancelOnly bool `json:"cancel_only"`
TradingDisabled bool `json:"trading_disabled"`
Status string `json:"status"`
StatusMessage string `json:"status_message"`
}
type Currency struct {
ID string `json:"id"`
Name string `json:"name"`
MinSize string `json:"min_size"`
}
type Message struct {
Type string `json:"type"`
ProductID string `json:"product_id"`
ProductIds []string `json:"product_ids"`
Products []Product `json:"products"`
Currencies []Currency `json:"currencies"`
TradeID int `json:"trade_id,number"`
OrderID string `json:"order_id"`
ClientOID string `json:"client_oid"`
Sequence int64 `json:"sequence,number"`
MakerOrderID string `json:"maker_order_id"`
TakerOrderID string `json:"taker_order_id"`
Time string `json:"time,string"`
RemainingSize string `json:"remaining_size"`
NewSize string `json:"new_size"`
OldSize string `json:"old_size"`
Size string `json:"size"`
Price string `json:"price"`
Side string `json:"side"`
Reason string `json:"reason"`
OrderType string `json:"order_type"`
Funds string `json:"funds"`
NewFunds string `json:"new_funds"`
OldFunds string `json:"old_funds"`
Message string `json:"message"`
Bids []string `json:"bids,omitempty"`
Asks []string `json:"asks,omitempty"`
Changes []SnapshotChange `json:"changes,omitempty"`
LastSize string `json:"last_size"`
BestBid string `json:"best_bid"`
BestAsk string `json:"best_ask"`
Channels []MessageChannel `json:"channels"`
UserID string `json:"user_id"`
ProfileID string `json:"profile_id"`
LastTradeID int `json:"last_trade_id"`
}
type MessageChannel struct {
Name string `json:"name"`
ProductIds []string `json:"product_ids"`
}
type SnapshotChange struct {
Side string
Price string
Size string
}
type SnapshotEntry struct {
Entry []string
}
func main(){
var wsDialer ws.Dialer
wsConn, _, err := wsDialer.Dial("wss://ws-feed.exchange.coinbase.com", nil)
if err != nil {
println(err.Error())
}
subscribe := Message{
Type: "subscribe",
Channels: []MessageChannel{
MessageChannel{
Name: "heartbeat",
ProductIds: []string{
"BTC-USD",
},
},
MessageChannel{
Name: "level2",
ProductIds: []string{
"BTC-USD",
},
},
},
}
if err := wsConn.WriteJSON(subscribe); err != nil {
println(err.Error())
}
for {
msgType, bs, err := wsConn.ReadMessage()
if err != nil {
log.Error(err)
return
}
log.Infof("Message type %v", msgType)
log.Infof("Message %v", string(bs))
}
}
Editor is loading...