84
85 useEffect(() => {
86 fetchSavedGrids();
87 }, []);
88
89 const fetchSavedGrids = async () => {
90 try {
91 const response = await fetch("/api/grids");
92 const data = await response.json();
93 if (data.success) {
95 }
96 } catch (error) {
97 console.error("Error fetching saved grids:", error);
98 }
99 };
106
107 try {
108 const response = await fetch("/api/save-grid", {
109 method: "POST",
110 headers: {
121 setSaveStatus(`Grid saved successfully as: ${data.key}`);
122 setGridName("");
123 fetchSavedGrids(); // Refresh the list of saved grids
124 } else {
125 setSaveStatus(`Error: ${data.error}`);
139 try {
140 // First, load the selected grid
141 const response = await fetch(`/api/grid/${selectedGrid}`);
142 const data = await response.json();
143 if (data.success && data.data.grid) {
147 // Then, save this grid to the special 'lite-brite' key
148 try {
149 await fetch("/api/save-grid", {
150 method: "POST",
151 headers: {
68 console.log("🎤 Sending request to Groq Whisper API");
69 const start = Date.now();
70 const response = await fetch("https://api.groq.com/openai/v1/audio/transcriptions", {
71 method: "POST",
72 headers: {
158 console.log("🔵 Sending request to Groq API");
159 const start = Date.now();
160 const response = await fetch("https://api.groq.com/openai/v1/chat/completions", {
161 method: "POST",
162 headers: {
214 console.log("🔊 Sending request to Groq Speech API");
215 const start = Date.now();
216 const response = await fetch("https://api.groq.com/openai/v1/audio/speech", {
217 method: "POST",
218 headers: {
579 this.statusMessage = 'Transcribing audio...';
580
581 const response = await fetch('/transcribe-audio', {
582 method: 'POST',
583 body: formData
613 }
614
615 const chatResponse = await fetch('/chat', {
616 method: 'POST',
617 headers: { 'Content-Type': 'application/json' },
692
693 console.log('Sending chat request to server');
694 const response = await fetch('/chat', {
695 method: 'POST',
696 headers: { 'Content-Type': 'application/json' },
762 this.statusMessage = 'Generating speech...';
763
764 const response = await fetch('/text-to-speech', {
765 method: 'POST',
766 headers: { 'Content-Type': 'application/json' },
990app.post("/text-to-speech", textToSpeechHandler);
991
992export default (typeof Deno !== "undefined" && Deno.env.get("valtown")) ? app.fetch : app;
993
994
126});
127
128// HTTP vals expect an exported "fetch handler"
129// This is how you "run the server" in Val Town with Hono
130export default app.fetch;
9 `https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}¤t_weather=true&temperature_unit=fahrenheit`;
10 try {
11 const response = await fetch(url);
12 if (!response.ok) {
13 throw new Error(`Weather API responded with status: ${response.status}`);
16 return data.current_weather;
17 } catch (error) {
18 console.error("Error fetching weather:", error);
19 return null;
20 }
60 </div>
61 )
62 : <div className="text-2xl mt-2.5">Unable to fetch weather data</div>}
63 </Content>
64 <Footer />
1import fetchWithCache from "./cache.ts";
2
3const GUARDIAN_API_KEY = Deno.env.get("GUARDIAN_API_KEY");
25 const cacheKey = `guardian_headlines_${size}`;
26
27 const data = await fetchWithCache(apiUrl, cacheKey).then((res) => res.json());
28 return new Response(JSON.stringify(data), {
29 headers: {
5
6async function getLogs() {
7 // TODO: use fetchWithCache
8 const url = "https://hemolog.com/api/recent-treatments?alertid=mike29";
9 try {
10 const response = await fetch(url);
11 if (!response.ok) {
12 throw new Error(`API responded with status: ${response.status}`);
15 return data;
16 } catch (error) {
17 console.error("Error fetching data:", error);
18 return null;
19 }
46 ))
47 )
48 : <div className="text-2xl mt-2.5">Unable to fetch data</div>}
49 </ul>
50 </Content>
6};
7
8export default async function fetchWithCache(
9 apiUrl: string,
10 cacheKey: string,
36 }
37
38 // Fetch new data if no valid cache exists
39 const response = await fetch(apiUrl);
40 if (!response.ok) {
41 throw new Error(`API responded with status: ${response.status}`);
63 });
64 } catch (error) {
65 console.error("Error fetching data:", error);
66 return new Response(JSON.stringify({ error: "Failed to fetch data" }), {
67 status: 500,
68 headers: { "Content-Type": "application/json" },
1import fetchWithCache from "./cache.ts";
2
3export type APOD = {
18 const cacheMinutes = 60;
19
20 const data: APOD = await fetchWithCache(url, cacheKey, cacheMinutes).then((res) => res.json());
21
22 if (!data) {
30 return c.json({ files: files.data });
31 } catch (error) {
32 console.error("Error fetching project files:", error);
33 return Response.json({ error: "Failed to fetch project files" }, { status: 500 });
34 }
35});
21 return c.json({ branches: branches.data });
22 } catch (error) {
23 console.error("Error fetching branches:", error);
24 return Response.json({ error: "Failed to fetch branches" }, { status: 500 });
25 }
26});