120 lines
3.6 KiB
Bash
120 lines
3.6 KiB
Bash
#! /bin/bash
|
|
|
|
if ! ps aux | grep -v grep | grep homeserver; then
|
|
cp synapse-test.key /tmp/
|
|
cp synapse-test-log.yaml /tmp/
|
|
homeserver -c config.yaml &> /tmp/synapse-test.log &
|
|
disown
|
|
fi
|
|
|
|
# pick a username
|
|
username="$(cat /proc/sys/kernel/random/uuid)"
|
|
|
|
# register
|
|
out="$(
|
|
curl -sS http://localhost:39487/_matrix/client/r0/register \
|
|
-X POST \
|
|
-H 'content-type: application/json' \
|
|
-d "$(
|
|
printf '{
|
|
"username": "%s",
|
|
"password": "%s",
|
|
"auth": {
|
|
"type": "m.login.dummy"
|
|
}
|
|
}' "$username"
|
|
)"
|
|
)"
|
|
printf "%s\n" "$out"
|
|
access_token="$(echo "$out" | jq -r .access_token)"
|
|
user_id="$(echo "$out" | jq -r .user_id)"
|
|
home_server="$(echo "$out" | jq -r .home_server)"
|
|
|
|
# create a room
|
|
room="$(cat /proc/sys/kernel/random/uuid)"
|
|
|
|
out="$(
|
|
curl -sS http://localhost:39487/_matrix/client/r0/createRoom\
|
|
-X POST \
|
|
-H 'content-type: application/json' \
|
|
-H 'Authorization: Bearer '"$access_token" \
|
|
-d "$(
|
|
printf '{
|
|
"room_alias_name": "%s"
|
|
}' "$room"
|
|
)"
|
|
)"
|
|
printf "%s\n" "$out"
|
|
room_id="$(echo "$out" | jq -r .room_id)"
|
|
|
|
# join a room by name
|
|
# curl -XPOST -d '{}' "https://localhost:8448/_matrix/client/r0/join/%21asfLdzLnOdGRkdPZWu:localhost?access_token=YOUR_ACCESS_TOKEN"
|
|
curl -sS "http://localhost:39487/_matrix/client/r0/join/$room_id" \
|
|
-X POST \
|
|
-H 'Authorization: Bearer '"$access_token" \
|
|
-d '{}'
|
|
|
|
# send message
|
|
# curl -XPOST -d '{"msgtype":"m.text", "body":"hello"}' "https://localhost:8448/_matrix/client/r0/rooms/%21asfLdzLnOdGRkdPZWu:localhost/send/m.room.message?access_token=YOUR_ACCESS_TOKEN"
|
|
#PUT /_matrix/client/r0/rooms/%21636q39766251%3Aexample.com/send/m.room.message/35 HTTP/1.1 Content-Type: application/json {"msgtype": "m.text","body": "hello"}
|
|
txid="$(cat /proc/sys/kernel/random/uuid)"
|
|
message="hello wurl"
|
|
|
|
out="$(
|
|
curl -sS "http://localhost:39487/_matrix/client/r0/rooms/$room_id/send/m.room.message/$txid" \
|
|
-X PUT \
|
|
-H 'content-type: application/json' \
|
|
-H 'Authorization: Bearer '"$access_token" \
|
|
-d "$(
|
|
printf '{
|
|
"msgtype": "m.text",
|
|
"body": "%s"
|
|
}' "$message"
|
|
)"
|
|
)"
|
|
printf "%s\n" "$out"
|
|
|
|
# get recent messages
|
|
# curl --globoff -XGET 'https://localhost:8448/_matrix/client/r0/sync?filter={"room":{"timeline":{"limit":1}}}&access_token=YOUR_ACCESS_TOKEN'
|
|
out="$(
|
|
curl -sS "http://localhost:39487/_matrix/client/r0/sync" \
|
|
-X GET \
|
|
-H 'content-type: application/json' \
|
|
-H 'Authorization: Bearer '"$access_token" \
|
|
| jq '{"timeline": .rooms.join[].timeline.events[], "next": .next_batch}' \
|
|
| jq '{"content": .timeline.content, "sender": .timeline.sender, "next": .next}' \
|
|
)"
|
|
printf "%s\n" "$out" | jq .
|
|
since="$(
|
|
echo "$out" \
|
|
| jq -r .next | tail -n 1)"
|
|
|
|
# send new message
|
|
txid="$(cat /proc/sys/kernel/random/uuid)"
|
|
message="hello wurl2"
|
|
|
|
out="$(
|
|
curl -sS "http://localhost:39487/_matrix/client/r0/rooms/$room_id/send/m.room.message/$txid" \
|
|
-X PUT \
|
|
-H 'content-type: application/json' \
|
|
-H 'Authorization: Bearer '"$access_token" \
|
|
-d "$(
|
|
printf '{
|
|
"msgtype": "m.text",
|
|
"body": "%s"
|
|
}' "$message"
|
|
)"
|
|
)"
|
|
printf "%s\n" "$out"
|
|
|
|
# get second recent messages
|
|
# curl --globoff -XGET 'https://localhost:8448/_matrix/client/r0/sync?filter={"room":{"timeline":{"limit":1}}}&access_token=YOUR_ACCESS_TOKEN'
|
|
curl -sS "http://localhost:39487/_matrix/client/r0/sync?since=$since" \
|
|
-X GET \
|
|
-H 'content-type: application/json' \
|
|
-H 'Authorization: Bearer '"$access_token" \
|
|
| jq '{"timeline": .rooms.join[].timeline.events[], "next": .next_batch}' \
|
|
| jq '{"content": .timeline.content, "sender": .timeline.sender, "next": .next}' \
|
|
| jq .
|
|
|