From 9781690db73f6d2f2090381dfe44d9b364741d0d Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Sun, 17 Nov 2024 18:36:23 -0500 Subject: Initial commit Dumb proxy all posts to bsky.feed.post --- main.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..7113036 --- /dev/null +++ b/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "encoding/json" + "log" + "os" + "os/signal" + + "github.com/gorilla/websocket" + "github.com/nats-io/nats.go" +) + +func main() { + // Connect to NATS + nc, err := nats.Connect(nats.DefaultURL) + if err != nil { + log.Fatal("Error connecting to NATS:", err) + } + defer nc.Close() + + // Connect to WebSocket + c, _, err := websocket.DefaultDialer.Dial("wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post", nil) + if err != nil { + log.Fatal("Error connecting to WebSocket:", err) + } + defer c.Close() + + // Handle WebSocket messages + go func() { + for { + _, message, err := c.ReadMessage() + if err != nil { + log.Println("Error reading WebSocket message:", err) + return + } + + // Verify that the message is valid JSON + var jsonMsg json.RawMessage + if err := json.Unmarshal(message, &jsonMsg); err != nil { + log.Println("Received non-JSON message, skipping") + continue + } + + // Publish the JSON message to NATS + if err := nc.Publish("bsky.feed.post", message); err != nil { + log.Println("Error publishing to NATS:", err) + } + } + }() + + // Wait for interrupt signal to gracefully shut down + interrupt := make(chan os.Signal, 1) + signal.Notify(interrupt, os.Interrupt) + <-interrupt + + log.Println("Shutting down...") +} \ No newline at end of file -- cgit