@copperjs/copper
Version:
A lightweight chromium grid
35 lines (27 loc) • 1.25 kB
text/typescript
import { FastifyPluginCallback } from 'fastify';
import { addWsUrl } from '../common/utils';
import { CreateSessionArgs, sessionManager } from './sessionManager';
export type withSessionId = { Params: { sessionId: string } };
export const registerRoutes: FastifyPluginCallback = (app, opts, done) => {
app.get('/status', async () => {
return { ready: true, message: 'Copper Is Ready' };
});
app.get('/sessions', async () => {
const value = sessionManager.listSessions();
return { status: 0, value };
});
app.post<{ Body: CreateSessionArgs }>('/session', async (req) => {
const session = await sessionManager.createSession(req.body);
const value = addWsUrl(req, session);
return { status: 0, value, sessionId: session.id };
});
app.get<withSessionId>('/session/:sessionId', async (req) => {
const value = sessionManager.getSession(req.params.sessionId);
return { status: 0, value, sessionId: value.id };
});
app.delete<withSessionId>('/session/:sessionId', async (req) => {
await sessionManager.removeSession(req.params.sessionId);
return { status: 0, value: null, sessionId: null, state: 'success' };
});
done();
};