mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 16:38:19 +01:00
Fix relationships endpoint
This commit is contained in:
parent
50ab0155a5
commit
41e70d00e8
|
|
@ -486,16 +486,12 @@ describe("POST /api/v1/accounts/:id/note", () => {
|
||||||
describe("GET /api/v1/accounts/relationships", () => {
|
describe("GET /api/v1/accounts/relationships", () => {
|
||||||
test("should return an array of APIRelationship objects for the authenticated user's relationships", async () => {
|
test("should return an array of APIRelationship objects for the authenticated user's relationships", async () => {
|
||||||
const response = await fetch(
|
const response = await fetch(
|
||||||
`${config.http.base_url}/api/v1/accounts/relationships`,
|
`${config.http.base_url}/api/v1/accounts/relationships?id[]=${user2.id}`,
|
||||||
{
|
{
|
||||||
method: "POST",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${token.access_token}`,
|
Authorization: `Bearer ${token.access_token}`,
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
|
||||||
"id[]": [user2.id],
|
|
||||||
}),
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,15 @@
|
||||||
export async function parseRequest<T>(request: Request): Promise<Partial<T>> {
|
export async function parseRequest<T>(request: Request): Promise<Partial<T>> {
|
||||||
const query = new URL(request.url).searchParams;
|
const query = new URL(request.url).searchParams;
|
||||||
|
|
||||||
|
// Parse SearchParams arrays into JSON arrays
|
||||||
|
const arrayKeys = [...query.keys()].filter(key => key.endsWith("[]"));
|
||||||
|
|
||||||
|
for (const key of arrayKeys) {
|
||||||
|
const value = query.getAll(key);
|
||||||
|
query.delete(key);
|
||||||
|
query.append(key, JSON.stringify(value));
|
||||||
|
}
|
||||||
|
|
||||||
// if request contains a JSON body
|
// if request contains a JSON body
|
||||||
if (request.headers.get("Content-Type")?.includes("application/json")) {
|
if (request.headers.get("Content-Type")?.includes("application/json")) {
|
||||||
return (await request.json()) as T;
|
return (await request.json()) as T;
|
||||||
|
|
@ -42,11 +51,15 @@ export async function parseRequest<T>(request: Request): Promise<Partial<T>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ([...query.entries()].length > 0) {
|
if ([...query.entries()].length > 0) {
|
||||||
const data: Record<string, string> = {};
|
const data: Record<string, string | string[]> = {};
|
||||||
|
|
||||||
for (const [key, value] of query.entries()) {
|
for (const [key, value] of query.entries()) {
|
||||||
|
try {
|
||||||
|
data[key] = JSON.parse(value) as string[];
|
||||||
|
} catch {
|
||||||
data[key] = value.toString();
|
data[key] = value.toString();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return data as T;
|
return data as T;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue