c0py: initial scaffolding for website registry tool
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
import { envSchema } from "@siax/c0py-config";
|
||||
|
||||
export type Env = typeof envSchema;
|
||||
export { envSchema };
|
||||
@@ -0,0 +1,53 @@
|
||||
import Fastify from "fastify";
|
||||
import { envSchema } from "@siax/c0py-config";
|
||||
|
||||
async function main() {
|
||||
const env = envSchema.parse(process.env);
|
||||
|
||||
const server = Fastify({ logger: true });
|
||||
|
||||
server.get("/health", async () => ({
|
||||
status: "ok",
|
||||
timestamp: new Date().toISOString(),
|
||||
}));
|
||||
|
||||
server.get("/", async () => ({
|
||||
name: "c0py",
|
||||
version: "0.1.0",
|
||||
status: "running",
|
||||
}));
|
||||
|
||||
// Registry endpoints
|
||||
server.get("/v1/c0py/registries", async () => {
|
||||
return { registries: [] };
|
||||
});
|
||||
|
||||
server.post("/v1/c0py/registries", async (request) => {
|
||||
const body = (request.body as Record<string, unknown>) ?? {};
|
||||
return { created: body };
|
||||
});
|
||||
|
||||
server.get("/v1/c0py/registries/:id", async (request) => {
|
||||
const { id } = request.params as Record<string, string>;
|
||||
return { id };
|
||||
});
|
||||
|
||||
// Scan endpoints
|
||||
server.post("/v1/c0py/scans", async (request) => {
|
||||
const body = (request.body as Record<string, unknown>) ?? {};
|
||||
return { scanId: "scan-" + Date.now(), created: body };
|
||||
});
|
||||
|
||||
server.get("/v1/c0py/scans/:id", async (request) => {
|
||||
const { id } = request.params as Record<string, string>;
|
||||
return { id };
|
||||
});
|
||||
|
||||
await server.listen({ port: env.PORT, host: "0.0.0.0" });
|
||||
console.log(`c0py API listening on port ${env.PORT}`);
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
testTimeout: 10000,
|
||||
Reference in New Issue
Block a user