fix: urlencode since opaque string

Since/next batch is an opaque string and might need to be urlencoded
before being sent to the server.

Signed-off-by: Guillem Nieto <gnieto.talo@gmail.com>
This commit is contained in:
Guillem Nieto Taló 2024-05-20 11:57:24 +02:00
parent 425a5d4a2f
commit 45f3e012db
2 changed files with 7 additions and 1 deletions

View File

@ -152,7 +152,7 @@ func (v *HTTPClient) createSyncURL(since string, isFirst, toDeviceOnly bool) str
qps += "timeout=30000"
}
if since != "" {
qps += "&since=" + since
qps += "&since=" + url.QueryEscape(since)
}
// Set presence to offline, this potentially reduces CPU load on upstream homeservers

View File

@ -65,6 +65,12 @@ func TestSyncURL(t *testing.T) {
toDeviceOnly: true,
wantURL: wantBaseURL + `?timeout=0&since=112233&set_presence=offline&filter=` + url.QueryEscape(`{"presence":{"not_types":["*"]},"room":{"rooms":[],"timeline":{"limit":50}}}`),
},
{
since: "112233#145",
isFirst: true,
toDeviceOnly: true,
wantURL: wantBaseURL + `?timeout=0&since=112233%23145&set_presence=offline&filter=` + url.QueryEscape(`{"presence":{"not_types":["*"]},"room":{"rooms":[],"timeline":{"limit":50}}}`),
},
}
for i, tc := range testCases {
gotURL := client.createSyncURL(tc.since, tc.isFirst, tc.toDeviceOnly)