From 6ff2a23ff7ccbe8a862031e1307087fb13187ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 23 Sep 2023 19:20:29 -0500 Subject: [PATCH] feat: removed non-proxy apis --- .gitignore | 1 - src/app/api/search/players/route.ts | 11 ------- src/app/api/stats/normalized/tanks/route.ts | 16 ---------- src/app/api/tankopedia/route.ts | 6 ++++ src/app/tools/session/page.tsx | 33 ++++++++++++++------- src/components/BlitzkriegWormWide.tsx | 4 +-- src/core/blitz/getTankStats.ts | 4 +-- src/core/blitz/tankopedia.ts | 8 +++-- src/renderers/today.tsx | 16 ---------- src/types/tanksStats.ts | 2 +- tsconfig.json | 18 ++++++++--- 11 files changed, 54 insertions(+), 65 deletions(-) delete mode 100644 src/app/api/search/players/route.ts delete mode 100644 src/app/api/stats/normalized/tanks/route.ts create mode 100644 src/app/api/tankopedia/route.ts diff --git a/.gitignore b/.gitignore index 2d966947f..bcf647cdf 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ package-lock.json dist/ dist.* yarn-error.log -commands.txt /test.* test.* /docs/.vitepress/dist diff --git a/src/app/api/search/players/route.ts b/src/app/api/search/players/route.ts deleted file mode 100644 index 21bb6aa19..000000000 --- a/src/app/api/search/players/route.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server'; -import listPlayers from '../../../../core/blitz/listPlayers'; - -export async function GET(request: NextRequest) { - const search = request.nextUrl.searchParams.get('search'); - const limitParam = request.nextUrl.searchParams.get('limit'); - const limit = limitParam ? parseInt(limitParam) : undefined; - const players = search ? await listPlayers(search, limit) : []; - - return NextResponse.json(players); -} diff --git a/src/app/api/stats/normalized/tanks/route.ts b/src/app/api/stats/normalized/tanks/route.ts deleted file mode 100644 index dc6fc5d3c..000000000 --- a/src/app/api/stats/normalized/tanks/route.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server'; -import { Region } from '../../../../../constants/regions'; -import getTankStats from '../../../../../core/blitz/getTankStats'; -import { NormalizedTankStats } from '../../../../../types/tanksStats'; - -export async function GET(request: NextRequest) { - const region = request.nextUrl.searchParams.get('region') as Region; - const id = parseInt(request.nextUrl.searchParams.get('id')!); - const tankStats = await getTankStats(region, id); - const normalized = tankStats.reduce( - (accumulator, tank) => ({ ...accumulator, [tank.tank_id]: tank }), - {}, - ); - - return NextResponse.json(normalized); -} diff --git a/src/app/api/tankopedia/route.ts b/src/app/api/tankopedia/route.ts new file mode 100644 index 000000000..665728654 --- /dev/null +++ b/src/app/api/tankopedia/route.ts @@ -0,0 +1,6 @@ +import { NextResponse } from 'next/server'; +import { tankopedia } from '../../../core/blitz/tankopedia'; + +export async function GET() { + return NextResponse.json(await tankopedia); +} diff --git a/src/app/tools/session/page.tsx b/src/app/tools/session/page.tsx index b3b06d94c..83c750054 100644 --- a/src/app/tools/session/page.tsx +++ b/src/app/tools/session/page.tsx @@ -8,16 +8,24 @@ import { Button } from '../../../components/Button'; import PageWrapper from '../../../components/PageWrapper'; import { SearchBar } from '../../../components/SearchBar'; import { REGION_NAMES } from '../../../constants/regions'; +import { WARGAMING_APPLICATION_ID } from '../../../constants/wargamingApplicationID'; import { diffNormalizedTankStats } from '../../../core/blitz/diffNormalizedTankStats'; -import { AccountListWithServer } from '../../../core/blitz/listPlayers'; +import getWargamingResponse from '../../../core/blitz/getWargamingResponse'; +import listPlayers, { + AccountListWithServer, +} from '../../../core/blitz/listPlayers'; +import { tankopedia } from '../../../core/blitz/tankopedia'; import { theme } from '../../../stitches.config'; import { useSession } from '../../../stores/session'; import { IndividualTankStats, NormalizedTankStats, + TanksStats, } from '../../../types/tanksStats'; import * as styles from './page.css'; +(async () => console.log(await tankopedia))(); + export default function Page() { const input = useRef(null); const [searchResults, setSearchResults] = useState< @@ -27,11 +35,7 @@ export default function Page() { const handleChange = debounce( async (event: ChangeEvent) => { if (event.target.value) { - const players = await fetch( - `/api/search/players?search=${event.target.value}`, - ).then((response) => response.json() as Promise); - - setSearchResults(players); + setSearchResults(await listPlayers(event.target.value)); } else { // TODO } @@ -45,9 +49,18 @@ export default function Page() { (async () => { if (session.isTracking) { const { id, region } = session; - const current = await fetch( - `/api/stats/normalized/tanks?id=${id}®ion=${region}`, - ).then((response) => response.json() as Promise); + const currentRaw = await getWargamingResponse( + `https://api.wotblitz.${region}/wotb/tanks/stats/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${id}`, + ); + const current = currentRaw[id].reduce< + Record + >( + (accumulator, curr) => ({ + ...accumulator, + [curr.tank_id]: curr, + }), + {}, + ); setDiff(diffNormalizedTankStats(session.tankStats, current)); } @@ -197,7 +210,7 @@ export default function Page() { {diff && (Object.entries(diff) as [string, IndividualTankStats][]) .sort(([, a], [, b]) => b.last_battle_time - a.last_battle_time) - .map(([id, tankStats]) => )} + .map(([id, tankStats]) => )} ); diff --git a/src/components/BlitzkriegWormWide.tsx b/src/components/BlitzkriegWormWide.tsx index a17d52e39..c5bd33b5d 100644 --- a/src/components/BlitzkriegWormWide.tsx +++ b/src/components/BlitzkriegWormWide.tsx @@ -24,8 +24,8 @@ export function BlitzkriegWormWide() { fill="currentColor" /> diff --git a/src/core/blitz/getTankStats.ts b/src/core/blitz/getTankStats.ts index 9f57e627e..8ff5766ba 100644 --- a/src/core/blitz/getTankStats.ts +++ b/src/core/blitz/getTankStats.ts @@ -1,11 +1,11 @@ import { REGION_NAMES, Region } from '../../constants/regions'; import { WARGAMING_APPLICATION_ID } from '../../constants/wargamingApplicationID'; -import { TankStats } from '../../types/tanksStats'; +import { TanksStats } from '../../types/tanksStats'; import throwError from '../node/throwError'; import getWargamingResponse from './getWargamingResponse'; export default async function getTankStats(region: Region, id: number) { - const tankStats = await getWargamingResponse( + const tankStats = await getWargamingResponse( `https://api.wotblitz.${region}/wotb/tanks/stats/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${id}`, ); diff --git a/src/core/blitz/tankopedia.ts b/src/core/blitz/tankopedia.ts index d9762500c..cddd116e4 100644 --- a/src/core/blitz/tankopedia.ts +++ b/src/core/blitz/tankopedia.ts @@ -22,8 +22,12 @@ export interface Tankopedia { } console.log('Caching tankopedia...'); -export const tankopedia = fetch('https://www.blitzstars.com/bs-tankopedia.json') - .then((response) => response.json()) +export const tankopedia = fetch( + typeof window === 'undefined' + ? 'https://www.blitzstars.com/bs-tankopedia.json' + : '/api/tankopedia', +) + .then(async (response) => response.json()) .then((wrapperTankopedia) => { console.log('Tankopedia cached'); return (wrapperTankopedia as { data: Tankopedia }).data; diff --git a/src/renderers/today.tsx b/src/renderers/today.tsx index a519e8bc2..0922c3db0 100644 --- a/src/renderers/today.tsx +++ b/src/renderers/today.tsx @@ -131,22 +131,6 @@ export default async function today( const tankopediaEntry = (await tankopedia)[id]; return ( - // maximized : index + 1 > maximized} - // key={id} - // name={showTotal && id === 0 ? 'Total' : await resolveTankName(id)} - // winrate={tankStats.wins / tankStats.battles} - // careerWinrate={career.wins / career.battles} - // WN8={isNaN(todayWN8s[id]) ? undefined : todayWN8s[id]} - // careerWN8={isNaN(careerWN8s[id]) ? undefined : careerWN8s[id]} - // damage={tankStats.damage_dealt / tankStats.battles} - // careerDamage={career.damage_dealt / career.battles} - // battles={tankStats.battles} - // careerBattles={career.battles} - // />