#!/bin/bash domain=$2 login_data=$1 output_file=$3 if [ -z $output_file ]; then output_file=matrix-rooms.txt fi if [ -z $domain -o ! -f $login_data ]; then echo "domain: $domain login: $login_data" echo "Usage: $0 ./path/to/matrix-login.txt \"https://matrix.server\"" exit 0 fi token=$(cat $login_data | jq -r '.access_token') # Queries for a list of room IDs # jq '.rooms.join' # Querying for a list of displaynames # TODO why are there null's in the list? # TODO how do I ALSO get the room ID? # TODO can I just select() in jq to select the room IDs? # jq '.rooms.join | .[].state.events[].content.channel' matrix-rooms.txt | grep -v null | less # Lists all room names out of the m.room.name state event as an array # jq '.rooms.join | [.[].state.events[] | select(.type == "m.room.name").content.name]' # List all room IDs with room names as objects {"room_name": x, "room_id": y} # jq '.rooms.join | to_entries[] | {"room_id": .key, "room_name": .value.state.events[] | select(.type == "m.room.name").content.name}' echo "Querying homeserver for room data. This might take a while ..." echo curl --globoff -XGET -H "Authorization: Bearer [YOUR TOKEN]" "$domain/_matrix/client/r0/sync?filter={"room":{"timeline":{"limit":1}}}" -o "$output_file" curl --globoff -XGET -H "Authorization: Bearer $token" "$domain/_matrix/client/r0/sync?filter={\"room\":{\"timeline\":{\"limit\":1}}}" -o "$output_file"