// GET /api/wallet?owner=
: that wallet's blanks, cards, $GLITCH and SOL, and how much of
// its per-wave and per-tier allowance it has used. Public chain data, but it costs RPC calls, so
// it's rate limited per client.
import { getWallet } from '../../server/card.ts'
import { ConfigError, configFailure, contextFor, gate, type CardEnv } from '../../server/env.ts'
import { failure, json } from '../../server/http.ts'
export const onRequestGet: PagesFunction = async ({ request, env }) => {
const params = new URL(request.url).searchParams
if ([...params.keys()].some((k) => k !== 'owner')) return json({ error: 'Expected ?owner=.', code: 'bad-request' }, 400)
const refused = await gate(request, env, 'wallet', 40)
if (refused) return refused
try {
return json(await getWallet(await contextFor(env), params.get('owner')))
} catch (err) {
return err instanceof ConfigError ? configFailure(err) : failure(err, 'wallet')
}
}