Fix stale cmd/ scripts, export LoginWithChromedp, clean up vet warnings

Update 5 cmd/ test utilities that referenced APIs that drifted after
bridge refactors (NewBrowserAuthManager, bridge.NewConfig, changed
function signatures). Rewrite test-kosmi and test-native to use
NewGraphQLWSClient directly. Export LoginWithChromedp for use by cmd
scripts. Fix redundant-newline vet warnings across 5 cmd/ files.
Remove unreachable code and replace deprecated ioutil calls in
bridge/helper/lottie_convert.go.

Made-with: Cursor
This commit is contained in:
cottongin
2026-04-05 05:49:26 -04:00
parent 4fc7f08b24
commit d314193540
12 changed files with 213 additions and 74 deletions

View File

@@ -2,84 +2,88 @@ package main
import (
"flag"
"fmt"
"os"
"os/signal"
"regexp"
"strings"
"syscall"
"time"
"github.com/42wim/matterbridge/bridge"
bkosmi "github.com/42wim/matterbridge/bridge/kosmi"
"github.com/sirupsen/logrus"
)
func main() {
// Parse command line flags
roomURL := flag.String("room", "https://app.kosmi.io/room/@hyperspaceout", "Kosmi room URL")
debug := flag.Bool("debug", false, "Enable debug logging")
flag.Parse()
// Set up logger
log := logrus.New()
if *debug {
log.SetLevel(logrus.DebugLevel)
} else {
log.SetLevel(logrus.InfoLevel)
}
log.SetFormatter(&logrus.TextFormatter{
FullTimestamp: true,
})
log.SetFormatter(&logrus.TextFormatter{FullTimestamp: true})
logger := log.WithField("bridge", "kosmi-test")
logger := log.WithField("bridge", "kosmi-native-test")
logger.Info("Starting Kosmi bridge test")
logger.Info("Starting Kosmi native WebSocket test")
logger.Infof("Room URL: %s", *roomURL)
// Create bridge configuration
cfg := bridge.NewConfig("kosmi.test", logger)
cfg.SetString("RoomURL", *roomURL)
cfg.SetBool("Debug", *debug)
// Create Kosmi bridge
b := bkosmi.New(cfg)
// Connect to Kosmi
logger.Info("Connecting to Kosmi...")
if err := b.Connect(); err != nil {
logger.Fatalf("Failed to connect to Kosmi: %v", err)
roomID, err := extractRoomID(*roomURL)
if err != nil {
logger.Fatalf("Failed to extract room ID: %v", err)
}
logger.Info("Successfully connected to Kosmi!")
client := bkosmi.NewGraphQLWSClient(*roomURL, roomID, "", logger)
// Start message listener
go func() {
for msg := range cfg.Remote {
logger.Infof("Received message: [%s] %s: %s",
msg.Timestamp.Format("15:04:05"),
msg.Username,
msg.Text)
client.OnMessage(func(payload *bkosmi.NewMessagePayload) {
username := payload.Data.NewMessage.User.DisplayName
if username == "" {
username = payload.Data.NewMessage.User.Username
}
}()
ts := time.Unix(payload.Data.NewMessage.Time, 0)
logger.Infof("Received message: [%s] %s: %s",
ts.Format("15:04:05"), username, payload.Data.NewMessage.Body)
})
logger.Info("Connecting to Kosmi via native WebSocket...")
if err := client.Connect(); err != nil {
logger.Fatalf("Failed to connect: %v", err)
}
logger.Info("Successfully connected!")
// Wait for interrupt signal
logger.Info("Listening for messages... Press Ctrl+C to exit")
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
// Optional: Send a test message after 5 seconds
go func() {
time.Sleep(5 * time.Second)
logger.Info("Bridge is running. Messages from Kosmi will appear above.")
logger.Info("To test sending messages, integrate with IRC or use the full Matterbridge setup")
}()
<-sigChan
logger.Info("Shutting down...")
// Disconnect
if err := b.Disconnect(); err != nil {
if err := client.Disconnect(); err != nil {
logger.Errorf("Error disconnecting: %v", err)
}
logger.Info("Goodbye!")
}
func extractRoomID(url string) (string, error) {
url = strings.TrimSuffix(url, "/")
re := regexp.MustCompile(`/room/(@?[a-zA-Z0-9_-]+)`)
matches := re.FindStringSubmatch(url)
if len(matches) >= 2 {
roomID := matches[1]
if !strings.HasPrefix(roomID, "@") {
roomID = "@" + roomID
}
return roomID, nil
}
return "", fmt.Errorf("could not extract room ID from URL: %s", url)
}