aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/joining.cpp
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2021-10-04 18:39:21 +0200
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2021-10-04 18:39:55 +0200
commit96f31d7d8ed1c9ab905c24ac039079aea622f4dc (patch)
tree06fea86951340d25a02cdd6f7eb89164be814bd9 /lib/csapi/joining.cpp
parent7c11f7fddbcc98e4b3b92060c475799d7518624c (diff)
downloadlibquotient-96f31d7d8ed1c9ab905c24ac039079aea622f4dc.tar.gz
libquotient-96f31d7d8ed1c9ab905c24ac039079aea622f4dc.zip
BaseJob: percent-encode variable path parts
This is meant to spare clients from having to percent-encode room aliases, v3 event ids etc. that happen to hit the endpoint path. It is unfair to expect clients to do that since they are not supposed to care about the shape of CS API, which parameter should be encoded in which way. The trick (together with the slightly updated GTAD configuration) is to percent-encode parts that happen to be QStrings and not `const char[]`'s while passing all constant parts as plain C character literals. This also allows to make it more certain that the path is correctly encoded by passing and storing QByteArray's wherever the path is already encoded, and only use QStrings (next to const char arrays) before that. Since the change alters the API contract (even if that contract was crappy), some crude detection of percent-encoded stuff on input is inserted; if input is already percent-encoded, a warning is put to the logs, alerting developers about the change.
Diffstat (limited to 'lib/csapi/joining.cpp')
0 files changed, 0 insertions, 0 deletions