|
const { createServer } = require('http') |
|
const { parse } = require('url') |
|
const next = require('next') |
|
|
|
const dev = process.env.NODE_ENV !== 'production' |
|
const hostname = '0.0.0.0' |
|
const { PORT = 3000 } = process.env |
|
|
|
const app = next({ dev, hostname, port: PORT }) |
|
const handle = app.getRequestHandler() |
|
|
|
app.prepare().then(() => { |
|
const server = createServer(handleRequest) |
|
.once('error', (err) => { |
|
console.error('error', err) |
|
process.exit(1) |
|
}) |
|
.listen(PORT, () => { |
|
console.log(`> Ready on http://${hostname}:${PORT}`) |
|
}) |
|
|
|
async function handleRequest(req, res) { |
|
try { |
|
const { method } = req |
|
|
|
|
|
const parsedUrl = parse(req.url, true) |
|
const { pathname, query } = parsedUrl |
|
|
|
if (pathname === '/api/counts') { |
|
server.getConnections(function (error, count) { |
|
res.end(String(count)) |
|
}) |
|
} if (pathname.endsWith('/create')) { |
|
await app.render(req, res, '/api/create', query) |
|
} else if (pathname.endsWith('/completions')) { |
|
await app.render(req, res, '/api/openai/chat/completions', query) |
|
} else if (pathname.endsWith('/models')) { |
|
res.end(JSON.stringify({ |
|
data: [ |
|
{ |
|
id: 'gpt-4', |
|
} |
|
], |
|
})) |
|
} else { |
|
await handle(req, res, parsedUrl) |
|
} |
|
} catch (err) { |
|
console.error('Error occurred handling', req.url, err) |
|
res.statusCode = 500 |
|
res.end('internal server error') |
|
} |
|
} |
|
}) |
|
|