Dax Raad 9 месяцев назад
Родитель
Сommit
f26873f5de
2 измененных файлов с 34 добавлено и 6 удалено
  1. 33 5
      js/src/server/server.ts
  2. 1 1
      js/src/session/session.ts

+ 33 - 5
js/src/server/server.ts

@@ -8,6 +8,10 @@ import { resolver, validator as zValidator } from "hono-openapi/zod";
 import { z } from "zod";
 import "zod-openapi/extend";
 
+const SessionInfo = Session.Info.openapi({
+  ref: "Session.Info",
+});
+
 export namespace Server {
   const log = Log.create({ service: "server" });
   const PORT = 16713;
@@ -59,11 +63,7 @@ export namespace Server {
               description: "Successfully created session",
               content: {
                 "application/json": {
-                  schema: resolver(
-                    Session.Info.openapi({
-                      ref: "Session.Info",
-                    }),
-                  ),
+                  schema: resolver(SessionInfo),
                 },
               },
             },
@@ -74,6 +74,34 @@ export namespace Server {
           return c.json(session);
         },
       )
+      .post(
+        "/session_share",
+        describeRoute({
+          description: "Share the session",
+          responses: {
+            200: {
+              description: "Successfully shared session",
+              content: {
+                "application/json": {
+                  schema: resolver(SessionInfo),
+                },
+              },
+            },
+          },
+        }),
+        zValidator(
+          "json",
+          z.object({
+            sessionID: z.string(),
+          }),
+        ),
+        async (c) => {
+          const body = c.req.valid("json");
+          await Session.share(body.sessionID);
+          const session = await Session.get(body.sessionID);
+          return c.json(session);
+        },
+      )
       .post(
         "/session_messages",
         describeRoute({

+ 1 - 1
js/src/session/session.ts

@@ -87,7 +87,7 @@ export namespace Session {
     if (!shareID) return;
     session.shareID = shareID;
     await update(session);
-    return shareID;
+    return shareID as string;
   }
 
   export async function update(session: Info) {