package main import ( "context" "log" "github.com/matrix-org/gomatrixserverlib/fclient" "maunium.net/go/mautrix" "maunium.net/go/mautrix/id" "codeberg.org/june64/mrvc/config" "codeberg.org/june64/mrvc/output" "codeberg.org/june64/mrvc/roominfotree" ) func main() { config := config.Get() userId := id.UserID(config.UserID) _, homeserver, err := userId.ParseAndValidate() if err != nil { log.Println("Error while parsing and validating the given user ID. Please ensure it is valid.") log.Fatal(err) } clientWellKnown, err := mautrix.DiscoverClientAPI(context.Background(), homeserver) if err != nil { log.Println("Error while trying to discover the homeservers client API URL from the given user ID. Please ensure it is valid and its homeserver is correctly configured.") log.Fatal(err) } homeserverURL := clientWellKnown.Homeserver.BaseURL client, err := mautrix.NewClient( homeserverURL, userId, config.Token, ) if err != nil { log.Fatal(err) } federationClient := fclient.NewClient( fclient.WithWellKnownSRVLookups(true), fclient.WithTimeout(config.HomeserverVersionInfoTimeout), ) roomInfoTree := roominfotree.Get(config.Rooms, config.Recursive, config.RecursionMaxDepth, config.RecursionSuggestedOnly, client, federationClient) if config.JSON { output.PrintJSON(roomInfoTree, config.OutputHomeserverMemberCount) } else { output.Print(roomInfoTree, config.OutputHomeserverMemberCount) } }