31 lines
845 B
TypeScript
31 lines
845 B
TypeScript
import { ModrinthClient } from "./client";
|
|
import { ProjectSchema, type Project } from "@/types";
|
|
|
|
/**
|
|
* 获取单个 project 的完整信息。
|
|
* GET /project/{id|slug}
|
|
*/
|
|
export async function getProject(
|
|
client: ModrinthClient,
|
|
idOrSlug: string,
|
|
): Promise<Project> {
|
|
const path = `/project/${encodeURIComponent(idOrSlug)}`;
|
|
const data = await client.get<unknown>(path);
|
|
return ProjectSchema.parse(data);
|
|
}
|
|
|
|
/**
|
|
* 批量获取多个 project 的完整信息。
|
|
* GET /projects?ids=["...","..."]
|
|
*/
|
|
export async function getProjects(
|
|
client: ModrinthClient,
|
|
ids: string[],
|
|
): Promise<Project[]> {
|
|
const params = new URLSearchParams();
|
|
params.set("ids", JSON.stringify(ids));
|
|
const path = `/projects?${params.toString()}`;
|
|
const data = await client.get<unknown[]>(path);
|
|
return ProjectSchema.array().parse(data);
|
|
}
|