From 29e99b708c37e2bbbadba73b6b88cda0bc25ab2a Mon Sep 17 00:00:00 2001 From: June Date: Tue, 19 Aug 2025 03:46:23 +0200 Subject: [PATCH] get and print the aliases for each room This is especially useful when using the recursive option as it allows for easier identification of each child room. --- main.go | 11 +++++++++-- roominfotree/roominfotree.go | 29 +++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index f7ac314..e3d9115 100644 --- a/main.go +++ b/main.go @@ -78,9 +78,16 @@ func main() { for roomID, roomInfo := range roomInfoTree { fmt.Println("Room:") fmt.Printf(" %s -> %d\n", roomID, roomInfo.MemberCount) - aliases := roomInfo.GivenAliases - if len(aliases) > 0 { + givenAliases := roomInfo.GivenAliases + if len(givenAliases) > 0 { fmt.Println("Given Aliases:") + for _, alias := range givenAliases { + fmt.Printf(" %s\n", alias) + } + } + aliases := roomInfo.Aliases + if len(aliases) > 0 { + fmt.Println("Aliases:") for _, alias := range aliases { fmt.Printf(" %s\n", alias) } diff --git a/roominfotree/roominfotree.go b/roominfotree/roominfotree.go index 0a8fd63..1097f19 100644 --- a/roominfotree/roominfotree.go +++ b/roominfotree/roominfotree.go @@ -22,6 +22,7 @@ type RoomInfoTree map[id.RoomID](*RoomInfo) type RoomInfo struct { MemberCount uint GivenAliases []string + Aliases []string MaxRoomVersions map[string](*MaxRoomVersionInfo) } @@ -147,6 +148,21 @@ func addChildRooms(givenRoomIDs []id.RoomID, recursionMaxDepth *int, recursionSu return roomIDs } +func getAliasesByRoomID(roomIDs []id.RoomID, client *mautrix.Client) map[id.RoomID]([]id.RoomAlias) { + aliasesByRoomID := make(map[id.RoomID]([]id.RoomAlias)) + + for _, roomID := range roomIDs { + aliasListResp, err := client.GetAliases(context.Background(), roomID) + if err != nil { + log.Fatal(err) + } + + aliasesByRoomID[roomID] = aliasListResp.Aliases + } + + return aliasesByRoomID +} + func getMembersByHomeserverByRoomID(roomIDs []id.RoomID, client *mautrix.Client) map[id.RoomID](map[string]uint) { joinedMembersByRoomID := make(map[id.RoomID]*mautrix.RespJoinedMembers) for _, roomID := range roomIDs { @@ -225,10 +241,11 @@ func getServerVersionInfoByHomeserver(homeservers []string, federationClient *fc } func Get(rooms []string, recursive bool, recursionMaxDepth *int, recursionSuggestedOnly bool, client *mautrix.Client, federationClient *fclient.Client) RoomInfoTree { - roomIDs, aliasesByRoomID := resolveRooms(rooms, client) + roomIDs, givenAliasesByRoomID := resolveRooms(rooms, client) if recursive { roomIDs = addChildRooms(roomIDs, recursionMaxDepth, recursionSuggestedOnly, client) } + aliasesByRoomID := getAliasesByRoomID(roomIDs, client) membersByHomeserverByRoomID := getMembersByHomeserverByRoomID(roomIDs, client) homeservers := getHomeservers(membersByHomeserverByRoomID) serverVersionInfoByHomeserver := getServerVersionInfoByHomeserver(homeservers, federationClient) @@ -239,9 +256,17 @@ func Get(rooms []string, recursive bool, recursionMaxDepth *int, recursionSugges roomInfo, ok := roomInfoTree[roomID] if !ok { roomInfo = &RoomInfo{ - GivenAliases: aliasesByRoomID[roomID], + GivenAliases: givenAliasesByRoomID[roomID], MaxRoomVersions: make(map[string]*MaxRoomVersionInfo), } + + aliases := aliasesByRoomID[roomID] + aliasStrings := make([]string, 0, len(aliases)) + for _, alias := range aliases { + aliasStrings = append(aliasStrings, alias.String()) + } + roomInfo.Aliases = aliasStrings + roomInfoTree[roomID] = roomInfo }