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) } }