1# Framer Fetch: Basic
2
3A basic example of an API endpoint to use with Framer Fetch.
1# Framer Fetch: Basic
2
3A basic example of an API endpoint to use with Framer Fetch.
24 });
25
26 const fetchWords = useCallback(async () => {
27 try {
28 const response = await fetch("https://random-word-api.herokuapp.com/all");
29 if (!response.ok) {
30 throw new Error("Failed to fetch words");
31 }
32 const data = await response.json();
38
39 useEffect(() => {
40 fetchWords();
41 }, [fetchWords]);
42
43 const generateChallenge = useCallback(() => {
1/** @jsxImportSource https://esm.sh/hono@4.0.8/jsx **/
2
3import { modifyFetchHandler } from "https://esm.town/v/andreterron/codeOnValTown?v=50";
4import view_route from "https://esm.town/v/pomdtr/blob_admin_blob";
5import create_route from "https://esm.town/v/pomdtr/blob_admin_create";
137});
138
139export default modifyFetchHandler(passwordAuth(app.fetch));
70 if (storedTotalKeypresses) setTotalKeypresses(parseInt(storedTotalKeypresses));
71
72 fetchNewWords();
73 return () => {
74 if (timerRef.current) clearInterval(timerRef.current);
82 }, [currentWords]);
83
84 const fetchNewWords = async () => {
85 setLoading(true);
86 setError(null);
87 try {
88 const response = await fetch(
89 `/generate-words?keys=${currentExercise.keys}&used=${
90 Array.from(usedWords).join(",")
170 setPastWords(prevWords => [{ word: currentWords, timePerChar }, ...prevWords]);
171 setUserInput("");
172 fetchNewWords();
173 }
174 };
193 setUsedWords(new Set());
194 resetTimer();
195 fetchNewWords();
196 };
197
11 const start = performance.now();
12 try {
13 const res = await fetch(url);
14 end = performance.now();
15 status = res.status;
22 } catch (e) {
23 end = performance.now();
24 reason = `couldn't fetch: ${e}`;
25 ok = false;
26 console.log(`Website down (${url}): ${reason} (${end - start}ms)`);
1/** @jsxImportSource https://esm.sh/hono@latest/jsx **/
2
3import { modifyFetchHandler } from "https://esm.town/v/andreterron/codeOnValTown?v=50";
4import { iframeHandler } from "https://esm.town/v/nbbaier/iframeHandler";
5import { resetStyle } from "https://esm.town/v/nbbaier/resetStyle";
16import { verifyToken } from "https://esm.town/v/pomdtr/verifyToken";
17import { ResultSet, sqlite } from "https://esm.town/v/std/sqlite";
18import { reloadOnSaveFetchMiddleware } from "https://esm.town/v/stevekrouse/reloadOnSave";
19import { Hono } from "npm:hono";
20import type { FC } from "npm:hono/jsx";
175});
176
177export const handler = app.fetch;
178export default iframeHandler(modifyFetchHandler(passwordAuth(handler, { verifyPassword: verifyToken })));
13// Scrapes the stencil fairs website and gets the upcoming events
14async function scrapeWebsiteAndGetEvents(url: string): Promise<Array<Event>> {
15 const response = await fetch(url);
16 if (!response.ok) {
17 throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
18 }
19
12 setIsLoading(true);
13 try {
14 const response = await fetch("https://esm.town/v/stevekrouse/openai", {
15 method: "POST",
16 headers: { "Content-Type": "application/json" },
13}
14
15const fetch = composeResponse({})(uwu.unwrap());
16console.timeEnd("Startup 500 routes");
17
18console.log(fetch.toString());
19
20export default fetch;