1
0
Fork 0
mirror of https://codeberg.org/june64/mrvc.git synced 2026-01-10 16:06:33 +01:00

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.
This commit is contained in:
June 2025-08-19 03:46:23 +02:00
commit 29e99b708c
Signed by: june
SSH key fingerprint: SHA256:o9EAq4Y9N9K0pBQeBTqhSDrND5E7oB+60ZNx0U1yPe0
2 changed files with 36 additions and 4 deletions

11
main.go
View file

@ -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)
}

View file

@ -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
}