8import { Hono } from "npm:hono";
9
10// The tree is fetched using an http request, so any http framework can be used
11const app = new Hono();
12
49});
50
51// this endpoint is used to dynamically fetch a list of tags from the api
52app.get("/tags/:tag", async (c) => {
53 let { tag } = c.req.param();
85}
86
87export default app.fetch;
88
108});
109
110export default app.fetch;
111
74});
75
76export default app.fetch;
77
9 let reason: string;
10 try {
11 const res = await fetch(URL, { redirect: "follow" });
12 if (res.status !== 200) {
13 reason = `(status code: ${res.status})`;
15 }
16 } catch (e) {
17 reason = `couldn't fetch: ${e}`;
18 ok = false;
19 }
35};
36
37async function fetchUser(token: string): Promise<User> {
38 const resp = await fetch("https://api.val.town/v1/me", {
39 headers: {
40 Authorization: `Bearer ${token}`,
43
44 if (resp.status !== 200) {
45 throw new Error("Could not fetch user");
46 }
47
50
51async function isCurrentUser(userID: string) {
52 const currentUser = await fetchUser(Deno.env.get("valtown"));
53 return userID == currentUser.id;
54}
82 const formData = await req.formData();
83 const token = formData.get("token").toString();
84 const user = await fetchUser(token);
85 if (await isCurrentUser(user.id)) {
86 return new Response("Unauthorized", {
111});
112
113export default app.fetch;
9 async function request(url, options) {
10 try {
11 const response = await fetch(url, options);
12 const status = response.status;
13 const data = await response.text();
43- You can use in JavaScript, TypeScript, JSX, or TSX
44- Utilize Deno-style import syntax for NPM packages, prefixed with "npm:"
45- Prefer native fetch for HTTP requests instead of axios
46- Prefer double quotes to single quotes
47
54});
55
56export default app.fetch;
28 })
29
30 return app.fetch
31}