Skip to content

Commit daec5eb

Browse files
committed
Add ai endpoints
1 parent 5861f13 commit daec5eb

5 files changed

Lines changed: 44 additions & 37 deletions

File tree

apps/api/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Hono } from "hono";
44
import authContext from "./context/authContext";
55
import cors from "./middlewares/cors";
66
import infoLogger from "./middlewares/infoLogger";
7+
import aiRouter from "./routes/ai";
78
import cronRouter from "./routes/cron";
89
import lensRouter from "./routes/lens";
910
import liveRouter from "./routes/live";
@@ -13,7 +14,6 @@ import ogRouter from "./routes/og";
1314
import ping from "./routes/ping";
1415
import preferencesRouter from "./routes/preferences";
1516
import sitemapRouter from "./routes/sitemap";
16-
import tempRouter from "./routes/temp";
1717

1818
const app = new Hono();
1919

@@ -32,7 +32,7 @@ app.route("/oembed", oembedRouter);
3232
app.route("/preferences", preferencesRouter);
3333
app.route("/sitemap", sitemapRouter);
3434
app.route("/og", ogRouter);
35-
app.route("/temp", tempRouter);
35+
app.route("/ai", aiRouter);
3636

3737
serve({ fetch: app.fetch, port: 4784 }, (info) => {
3838
console.info(`Server running on port ${info.port}`);

apps/api/src/routes/ai/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { zValidator } from "@hono/zod-validator";
2+
import { Hono } from "hono";
3+
import { z } from "zod";
4+
import translate from "./translate";
5+
6+
const app = new Hono();
7+
8+
app.post(
9+
"/translate",
10+
zValidator("json", z.object({ text: z.string() })),
11+
translate
12+
);
13+
14+
export default app;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Errors } from "@hey/data/errors";
2+
import type { Context } from "hono";
3+
4+
const translate = async (ctx: Context) => {
5+
try {
6+
const authHeader = ctx.req.raw.headers.get("authorization");
7+
8+
if (!authHeader || !authHeader.startsWith("Bearer ")) {
9+
return ctx.json({ success: false, error: "Unauthorized" }, 401);
10+
}
11+
12+
const token = authHeader.split(" ")[1];
13+
14+
if (token !== process.env.SHARED_SECRET) {
15+
return ctx.json({ success: false, error: "Invalid shared secret" }, 401);
16+
}
17+
18+
return ctx.json({
19+
allowed: true,
20+
sponsored: true,
21+
signingKey: process.env.PRIVATE_KEY
22+
});
23+
} catch {
24+
return ctx.json({ success: false, error: Errors.SomethingWentWrong }, 500);
25+
}
26+
};
27+
28+
export default translate;

apps/api/src/routes/temp/getJumperData.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

apps/api/src/routes/temp/index.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)