import { BlitzServer } from '../../constants/servers.js'; import { Clan, ClanList } from '../../types/clanList.js'; import { args } from '../process/args.js'; import getWargamingResponse from './getWargamingResponse.js'; export type ClanListWithServer = (Clan & { server: 'com' | 'eu' | 'asia'; })[]; export default async function listClansPanServer(search: string, limit = 9) { const trimmed = search.trim(); if (trimmed.length < 3 && trimmed.length > 100) return []; const normalizedLimit = Math.round(limit / 3); return ( await Promise.all([ getWargamingResponse( `https://api.wotblitz.com/wotb/clans/list/?application_id=${args['wargaming-application-id']}&search=${search}&limit=${normalizedLimit}`, ).then( (value) => value && value.map((account) => ({ ...account, server: 'com' as BlitzServer, })), ), getWargamingResponse( `https://api.wotblitz.eu/wotb/clans/list/?application_id=${args['wargaming-application-id']}&search=${search}&limit=${normalizedLimit}`, ).then( (value) => value && value.map((account) => ({ ...account, server: 'eu' as BlitzServer, })), ), getWargamingResponse( `https://api.wotblitz.asia/wotb/clans/list/?application_id=${args['wargaming-application-id']}&search=${search}&limit=${normalizedLimit}`, ).then( (value) => value && value.map((account) => ({ ...account, server: 'asia' as BlitzServer, })), ), ]) ) .filter(Boolean) .flat(); }