// Next.js API route support: https://nextjs.org/docs/api-routes/introduction import type { NextApiRequest, NextApiResponse } from 'next' interface ErrorResponse { error: string } export interface Faucet { address: string secret: string xrp: number hash: string code: string } export default async function handler( req: NextApiRequest, res: NextApiResponse ) { if (req.method !== 'POST') { return res.status(405).json({ error: 'Method not allowed!' }) } const { account } = req.query const ip = Array.isArray(req?.headers?.['x-real-ip']) ? req?.headers?.['x-real-ip'][0] : req?.headers?.['x-real-ip'] try { const response = await fetch( `https://${process.env.NEXT_PUBLIC_TESTNET_URL}/newcreds?account=${account ? account : ''}`, { method: 'POST', headers: { 'x-forwarded-for': ip || '' } } ) const json: Faucet | ErrorResponse = await response.json() if ('error' in json) { return res.status(429).json(json) } return res.status(200).json(json) } catch (err) { console.error(err) return res.status(500).json({ error: 'Server error' }) } return res.status(500).json({ error: 'Not able to create faucet, try again' }) }