package main import ( "fmt" "os" "github.com/CaliDog/certstream-go" "github.com/sirupsen/logrus" "gitlab.dcso.lolcat/LABS/styx/broker" "gitlab.dcso.lolcat/LABS/styx/models" "gitlab.dcso.lolcat/LABS/styx/utils" ) const ( nodesFilename = "nodes.json" edgesFilename = "edges.json" ) func main() { // checking that data files exist err := fileExists(nodesFilename) if err != nil { logrus.Error(err) } err = fileExists(edgesFilename) if err != nil { logrus.Error(err) } // The false flag specifies that we want heartbeat messages. stream, errStream := certstream.CertStreamEventStream(false) fmt.Println("Starting to get data from CertStream...") Conn, err := broker.SetUpKafkaConnecter() if err != nil { panic(err) } go broker.ReadEventFromKafka() for { select { case jq := <-stream: if data, err := utils.ExtractCertFromStream(jq); err == nil { node, err := models.BuildNode("certstream", *data) if err != nil { panic(err) } fmt.Println(node) err = broker.SendEventToKafka(Conn, *node) if err != nil { panic(err) } } case err := <-errStream: logrus.Error(err) } } } // Helpers func fileExists(filename string) error { _, err := os.Stat(filename) if os.IsNotExist(err) { _, err := os.Create(filename) if err != nil { return err } } return nil }