Files
smugglers-run/services/swapi.ts
T
2026-02-07 20:11:26 +01:00

36 lines
1.1 KiB
TypeScript

import { SWAPIPlanet, SWAPIStarship, Planet, Starship } from "@/types/swapi";
const BASE_URL = "https://swapi.dev/api";
export async function fetchPlanets(): Promise<Planet[]> {
const res = await fetch(`${BASE_URL}/planets/`);
if (!res.ok) throw new Error("Galaxy data unavailable");
const data = await res.json();
return data.results.map(
(p: SWAPIPlanet): Planet => ({
...p,
id: p.url,
// Add random x/y coordinates for galaxy map
x: Math.floor(Math.random() * 80) + 10,
y: Math.floor(Math.random() * 70) + 15,
}),
);
}
export async function fetchStarships(): Promise<Starship[]> {
const res = await fetch(`${BASE_URL}/starships/`);
if (!res.ok) throw new Error("Imperial records unavailable");
const data = await res.json();
return data.results.map((s: SWAPIStarship): Starship => {
// Add difficulty score based on ship cost
const cost = parseInt(s.cost_in_credits);
let ds = 8;
if (isNaN(cost) || cost > 1000000) ds = 12;
else if (cost > 100000) ds = 10;
return { ...s, id: s.url, ds };
});
}