66 lines
1.5 KiB
TypeScript
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,
|
|
}); |