github.com/polygon-io/client-go@v1.16.4/websocket/example/fmv/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.BusinessFeed,
    19  		Market: polygonws.Stocks,
    20  		Log:    log,
    21  	})
    22  	if err != nil {
    23  		log.Fatal(err)
    24  	}
    25  	defer c.Close()
    26  
    27  	// FMV
    28  	_ = c.Subscribe(polygonws.BusinessFairMarketValue, "*")
    29  
    30  	if err := c.Connect(); err != nil {
    31  		log.Error(err)
    32  		return
    33  	}
    34  
    35  	sigint := make(chan os.Signal, 1)
    36  	signal.Notify(sigint, os.Interrupt)
    37  
    38  	for {
    39  		select {
    40  		case <-sigint:
    41  			return
    42  		case <-c.Error():
    43  			return
    44  		case out, more := <-c.Output():
    45  			if !more {
    46  				return
    47  			}
    48  			switch out.(type) {
    49  			case models.FairMarketValue:
    50  				log.WithFields(logrus.Fields{"fmv": out}).Info()
    51  
    52  			default:
    53  				log.WithFields(logrus.Fields{"unknown": out}).Info()
    54  			}
    55  		}
    56  	}
    57  }