Fix path() doing nothing without a mxid

This commit is contained in:
Cadence Ember 2023-11-25 22:55:11 +13:00
parent b9ec28a5ad
commit 57d5cfb480
2 changed files with 9 additions and 3 deletions

View file

@ -19,15 +19,17 @@ const makeTxnId = sync.require("./txnid")
* @returns {string} the new endpoint
*/
function path(p, mxid, otherParams = {}) {
if (!mxid) return p
const u = new URL(p, "http://localhost")
u.searchParams.set("user_id", mxid)
if (mxid) u.searchParams.set("user_id", mxid)
for (const entry of Object.entries(otherParams)) {
if (entry[1] != undefined) {
u.searchParams.set(entry[0], entry[1])
}
}
return u.pathname + "?" + u.searchParams.toString()
let result = u.pathname
const str = u.searchParams.toString()
if (str) result += "?" + str
return result
}
/**

View file

@ -20,3 +20,7 @@ test("api path: existing query parameters with mxid", t => {
test("api path: real world mxid", t => {
t.equal(path("/hello/world", "@cookie_monster:cadence.moe"), "/hello/world?user_id=%40cookie_monster%3Acadence.moe")
})
test("api path: extras number works", t => {
t.equal(path(`/client/v3/rooms/!example/timestamp_to_event`, null, {ts: 1687324651120}), "/client/v3/rooms/!example/timestamp_to_event?ts=1687324651120")
})