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:
90
cmd/test-kosmi/main.go
Normal file
90
cmd/test-kosmi/main.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"regexp"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
bkosmi "github.com/42wim/matterbridge/bridge/kosmi"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func main() {
|
||||
roomURL := flag.String("room", "https://app.kosmi.io/room/@hyperspaceout", "Kosmi room URL")
|
||||
debug := flag.Bool("debug", false, "Enable debug logging")
|
||||
flag.Parse()
|
||||
|
||||
log := logrus.New()
|
||||
if *debug {
|
||||
log.SetLevel(logrus.DebugLevel)
|
||||
} else {
|
||||
log.SetLevel(logrus.InfoLevel)
|
||||
}
|
||||
log.SetFormatter(&logrus.TextFormatter{FullTimestamp: true})
|
||||
|
||||
logger := log.WithField("bridge", "kosmi-test")
|
||||
|
||||
logger.Info("Starting Kosmi bridge test")
|
||||
logger.Infof("Room URL: %s", *roomURL)
|
||||
|
||||
roomID, err := extractRoomID(*roomURL)
|
||||
if err != nil {
|
||||
logger.Fatalf("Failed to extract room ID: %v", err)
|
||||
}
|
||||
|
||||
// Empty token = anonymous access
|
||||
client := bkosmi.NewGraphQLWSClient(*roomURL, roomID, "", logger)
|
||||
|
||||
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...")
|
||||
if err := client.Connect(); err != nil {
|
||||
logger.Fatalf("Failed to connect to Kosmi: %v", err)
|
||||
}
|
||||
logger.Info("Successfully connected to Kosmi!")
|
||||
|
||||
logger.Info("Listening for messages... Press Ctrl+C to exit")
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
go func() {
|
||||
time.Sleep(5 * time.Second)
|
||||
logger.Info("Bridge is running. Messages from Kosmi will appear above.")
|
||||
}()
|
||||
|
||||
<-sigChan
|
||||
logger.Info("Shutting down...")
|
||||
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user