1# Glide API 2.0
2
3`Effects` and utility functions for working with Glide API 2.0.
4
5## Authentication
121 const _0x4d306e = _0x249a7e.substr(0, _0x249a7e.indexOf("&"));
122
123 const api = "https://s3taku.com/encrypt-ajax.php?id="
124 + CryptoJS.AES.encrypt(_0x4d306e, CryptoJS.enc.Utf8.parse(key()), {
125 iv: CryptoJS.enc.Utf8.parse(iv()),
126 }).toString() + _0x249a7e.substr(_0x249a7e.indexOf("&")) + "&alias=" + _0x4d306e;
127
128 const apiResponse = await fetch(api, {
129 headers: {
130 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
141 });
142
143 if (!apiResponse.ok) throw new Error(`Failed to fetch API: ${apiResponse.statusText}`);
144
145 const apiData = await apiResponse.json();
146 const _0x3b405f = JSON.parse(
147 CryptoJS.enc.Utf8.stringify(CryptoJS.AES.decrypt(apiData.data, CryptoJS.enc.Utf8.parse(key2()), {
148 iv: CryptoJS.enc.Utf8.parse(iv()),
149 })),
36
37Custom middleware can be added in an array as the third argument.
38Middleware can add data to the `req.data` object or return a response for things like API endpoints.
39
40```tsx
62```tsx
63// example middleware
64async function api (req: Request, res: Response, next): Promise<Response> {
65 if (req.pathname !== "/api") return next();
66 if (req.method === "POST") {
67 return Repsonse.json({ message: "Hello POST request" });
70}
71
72export default render(App, import.meta.url, [ api ]);
73```
74
1# getSpotifyTrackUrl
2
3Get a Spotify Track Url using the Spotify Web API given an artist and a song title.
4
5Track info is cached by the query and also the spotify track id, so your popular queries won't have to fetch from Spotify over and over.
28 <title>VALL-E-DRAW</title>
29 <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
30 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@500;700&display=swap"/>
31 <link rel="stylesheet" href="https://esm.sh/tldraw@2.3.0/tldraw.css"/>
32 <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet" />
1Use my own OpenAI API key to avoid limit
9export async function getGeminiModels(): Promise<GeminiModel[]> {
10 try {
11 const API_KEY = process.env.GEMINI_API_KEY;
12
13 const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models?key=${API_KEY}`);
14
15 const data = await response.json();
1import { fetch } from "https://esm.town/v/std/fetch";
2
3let result = await fetch("https://api64.ipify.org?format=json");
4let json = await result.json();
5console.log(json.ip);
11- [ ] Have any other email login ping me for approval or make a private val with a list of approved emails
12
13## Switchbot API
14
15This val authenticates to the switchbot API with `SWITCHBOT_TOKEN` and `SWITCHBOT_KEY`.
16
17Learn how to get your own Switchbot API keys here: [Switchbot Docs](https://github.com/OpenWonderLabs/SwitchBotAPI).
18
19Migrated from folder: Archive/switchbot
11- [ ] Have any other email login ping me for approval or make a private val with a list of approved emails
12
13## Switchbot API
14
15This val authenticates to the switchbot API with `SWITCHBOT_TOKEN` and `SWITCHBOT_KEY`.
16
17Learn how to get your own Switchbot API keys here: [Switchbot Docs](https://github.com/OpenWonderLabs/SwitchBotAPI).
18
19Migrated from folder: Archive/switchbot