Files
blitzkit/packages/core/src/blitz/getClanInfo.ts
T

51 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-10-12 15:05:58 +00:00
import { fetchBlitz } from "./fetchBlitz";
import { normalizeIds } from "./normalizeIds";
import { Region } from "./regions";
2023-10-12 13:00:33 -05:00
2024-03-12 23:36:56 -05:00
interface IndividualClanInfo {
2023-10-12 13:00:33 -05:00
recruiting_options: {
vehicles_level: number;
wins_ratio: number;
average_battles_per_day: number;
battles: number;
average_damage: number;
};
members_count: number;
name: string;
creator_name: string;
clan_id: number;
created_at: number;
updated_at: number;
leader_name: string;
members_ids: number[];
recruiting_policy: string;
tag: string;
is_clan_disbanded: boolean;
old_name: string;
emblem_set_id: number;
creator_id: number;
motto: string;
renamed_at: number;
old_tag: null;
leader_id: number;
description: string;
}
2024-03-12 23:36:56 -05:00
interface ClanInfo {
2023-10-12 13:00:33 -05:00
[clanId: number]: IndividualClanInfo;
}
export async function getClanInfo<
Ids extends number | number[],
ReturnType = Ids extends number ? IndividualClanInfo : IndividualClanInfo[],
>(region: Region, ids: Ids) {
2025-10-12 15:05:58 +00:00
const object = await fetchBlitz<ClanInfo>(region, "clans/info", {
2024-04-15 13:19:25 -05:00
clan_id: normalizeIds(ids),
});
2023-10-12 13:00:33 -05:00
2025-10-12 15:05:58 +00:00
if (typeof ids === "number") {
2023-10-12 13:00:33 -05:00
return object[ids as number] as ReturnType;
} else {
return ids.map((id) => object[id]) as ReturnType;
}
}