github.com/polygon-io/client-go@v1.16.4/websocket/example/launchpad/main.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"os/signal"
     6  
     7  	polygonws "github.com/polygon-io/client-go/websocket"
     8  	"github.com/polygon-io/client-go/websocket/models"
     9  	"github.com/sirupsen/logrus"
    10  )
    11  
    12  func main() {
    13  	log := logrus.New()
    14  	log.SetLevel(logrus.DebugLevel)
    15  	log.SetFormatter(&logrus.JSONFormatter{})
    16  	c, err := polygonws.New(polygonws.Config{
    17  		APIKey: os.Getenv("POLYGON_API_KEY"),
    18  		Feed:   polygonws.LaunchpadFeed,
    19  		Market: polygonws.Stocks, // Change Market to match examples below (Stocks, Options, Forex, or Crypto)
    20  		Log:    log,
    21  	})
    22  	if err != nil {
    23  		log.Fatal(err)
    24  	}
    25  	defer c.Close()
    26  
    27  	// Stocks - make sure you change "Market: polygonws.Stocks" above in the polygonws.Config
    28  	err = c.Subscribe(polygonws.StocksLaunchpadMinAggs, "*")
    29  	//err = c.Subscribe(polygonws.StocksLaunchpadValue, "*")
    30  
    31  	// Options - make sure you change "Market: polygonws.Options" above in the polygonws.Config
    32  	//err = c.Subscribe(polygonws.OptionsLaunchpadMinAggs, "O:A230616C00070000")
    33  	//err = c.Subscribe(polygonws.OptionsLaunchpadValue, "O:A230616C00070000")
    34  
    35  	// Forex - make sure you change "Market: polygonws.Forex" above in the polygonws.Config
    36  	//err = c.Subscribe(polygonws.ForexLaunchpadMinAggs, "*")
    37  	//err = c.Subscribe(polygonws.ForexLaunchpadValue, "*")
    38  
    39  	// Crypto - make sure you change "Market: polygonws.Crypto" above in the polygonws.Config
    40  	//err = c.Subscribe(polygonws.CryptoLaunchpadMinAggs, "*")
    41  	//err = c.Subscribe(polygonws.CryptoLaunchpadValue, "*")
    42  
    43  	if err != nil {
    44  		log.Error(err)
    45  		return
    46  	}
    47  
    48  	if err := c.Connect(); err != nil {
    49  		log.Error(err)
    50  		return
    51  	}
    52  
    53  	sigint := make(chan os.Signal, 1)
    54  	signal.Notify(sigint, os.Interrupt)
    55  
    56  	for {
    57  		select {
    58  		case <-sigint:
    59  			return
    60  		case <-c.Error():
    61  			return
    62  		case out, more := <-c.Output():
    63  			if !more {
    64  				return
    65  			}
    66  
    67  			switch out.(type) {
    68  			case models.CurrencyAgg:
    69  				log.WithFields(logrus.Fields{"currency aggregate": out}).Info()
    70  			case models.EquityAgg:
    71  				log.WithFields(logrus.Fields{"equity aggregate": out}).Info()
    72  			case models.LaunchpadValue:
    73  				log.WithFields(logrus.Fields{"value": out}).Info()
    74  			}
    75  		}
    76  	}
    77  }