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}
415});
416
417export default app.fetch;
49}
50
51export default async function fetch(req: Request) {
52 try {
53 const { pathname } = new URL(req.url);
1export default async function fetch(req: Request) {
2 const countParam = new URL(req.url).searchParams.get("count");
3 if (countParam === null) {