github.com/InjectiveLabs/sdk-go@v1.53.0/examples/exchange/oracle/1_StreamPrices/example.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"fmt"
     7  
     8  	chainclient "github.com/InjectiveLabs/sdk-go/client/chain"
     9  
    10  	"github.com/InjectiveLabs/sdk-go/client/common"
    11  	exchangeclient "github.com/InjectiveLabs/sdk-go/client/exchange"
    12  )
    13  
    14  func main() {
    15  	network := common.LoadNetwork("testnet", "lb")
    16  	exchangeClient, err := exchangeclient.NewExchangeClient(network)
    17  	if err != nil {
    18  		panic(err)
    19  	}
    20  
    21  	ctx := context.Background()
    22  	marketsAssistant, err := chainclient.NewMarketsAssistantInitializedFromChain(ctx, exchangeClient)
    23  	market := marketsAssistant.AllDerivativeMarkets()["0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6"]
    24  
    25  	baseSymbol := market.OracleBase
    26  	quoteSymbol := market.OracleQuote
    27  	oracleType := market.OracleType
    28  	stream, err := exchangeClient.StreamPrices(ctx, baseSymbol, quoteSymbol, oracleType)
    29  	if err != nil {
    30  		panic(err)
    31  	}
    32  
    33  	for {
    34  		select {
    35  		case <-ctx.Done():
    36  			return
    37  		default:
    38  			res, err := stream.Recv()
    39  			if err != nil {
    40  				fmt.Println(err)
    41  				return
    42  			}
    43  			str, _ := json.MarshalIndent(res, "", " ")
    44  			fmt.Print(string(str))
    45  		}
    46  	}
    47  }