import {send, sendError, fetch} from '../../../util/http'; import {NowRequest, NowResponse} from '@vercel/node'; interface App { trackId: string; trackName: string; kind: string; version: string; price: string; trackViewUrl: string; } interface AppStoreResponse { results: App[]; } export default async function handler( req: NowRequest, res: NowResponse, ): Promise { const {query, country} = req.query; if (!query || typeof query !== 'string') { return sendError(res, new Error('No query given')); } const term = encodeURIComponent(query); const countryCode = country || 'us'; const limit = 10; try { const response = await fetch( `https://itunes.apple.com/search?media=software&entity=software,iPadSoftware,macSoftware&country=${countryCode}&limit=${limit}&term=${term}`, 'GET', ); const body: AppStoreResponse = await response.json(); const apps = body.results.map((app) => ({ id: app.trackId, name: app.trackName, kind: app.kind, version: app.version, price: app.price, viewURL: app.trackViewUrl, })); send(res, {result: apps || []}); } catch (err) { sendError(res, err); } }