Files
gobot/gobot-gui/webrtc_test/api/main.ts
2024-11-03 23:52:06 +01:00

66 lines
1.5 KiB
TypeScript

import { Application, Router } from "jsr:@oak/oak@14";
import { router_webrtc } from "./webrtc_fake.ts";
const app = new Application();
const router = new Router({
prefix: "/api",
});
let offer: any = {};
let answer: any = {};
router.post("/offer", async (ctx) => {
const body = await ctx.request.body.json();
if (body) {
offer = body;
ctx.response.status = 200;
ctx.response.body = { message: "Answer stored successfully" };
} else {
ctx.response.status = 400;
ctx.response.body = { error: "Invalid JSON" };
}
});
router.post("/answer", async (ctx) => {
const body = await ctx.request.body.json();
if (body) {
answer = body;
ctx.response.status = 200;
ctx.response.body = { message: "Answer stored successfully" };
} else {
ctx.response.status = 400;
ctx.response.body = { error: "Invalid JSON" };
}
});
router.get("/offer", (ctx) => {
ctx.response.body = offer;
if(Object.keys(answer).length === 0) {
ctx.response.status = 204;
} else {
offer = {};
ctx.response.status = 200;
}
ctx.response.headers.set("Content-Type", "application/json");
});
router.get("/answer", (ctx) => {
ctx.response.body = answer;
if(Object.keys(answer).length === 0) {
ctx.response.status = 204;
} else {
answer = {};
ctx.response.status = 200;
}
ctx.response.headers.set("Content-Type", "application/json");
});
app.use(router_webrtc.routes());
app.use(router_webrtc.allowedMethods());
app.use(router.routes());
app.use(router.allowedMethods());
app.listen({
port: 8080,
});