/* * Copyright (C) 2024 Puter Technologies Inc. * * This file is part of Puter. * * Puter is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ const request_examples = [ { name: 'entity storage app read', fetch: async (args) => { return await fetch(`${window.api_origin}/drivers/call`, { headers: { "Content-Type": "application/json", "Authorization": `Bearer ${puter.authToken}`, }, body: JSON.stringify({ interface: 'puter-apps', method: 'read', args, }), method: "POST", }); }, out: async (resp) => { const data = await resp.json(); if ( ! data.success ) return data; return data.result; }, exec: async function exec (...a) { const resp = await this.fetch(...a); return await this.out(resp); }, }, { name: 'entity storage app select all', fetch: async () => { return await fetch(`${window.api_origin}/drivers/call`, { headers: { "Content-Type": "application/json", "Authorization": `Bearer ${puter.authToken}`, }, body: JSON.stringify({ interface: 'puter-apps', method: 'select', args: { predicate: [] }, }), method: "POST", }); }, out: async (resp) => { const data = await resp.json(); if ( ! data.success ) return data; return data.result; }, exec: async function exec (...a) { const resp = await this.fetch(...a); return await this.out(resp); }, }, { name: 'grant permission from a user to a user', fetch: async (user, perm) => { return await fetch(`${window.api_origin}/auth/grant-user-user`, { "headers": { "Content-Type": "application/json", "Authorization": `Bearer ${puter.authToken}`, }, "body": JSON.stringify({ target_username: user, permission: perm, }), "method": "POST", }); }, out: async (resp) => { const data = await resp.json(); return data; }, exec: async function exec (...a) { const resp = await this.fetch(...a); return await this.out(resp); }, }, { name: 'write file', fetch: async (path, str) => { const endpoint = `${window.api_origin}/write`; const token = puter.authToken; const blob = new Blob([str], { type: 'text/plain' }); const formData = new FormData(); formData.append('create_missing_ancestors', true); formData.append('path', path); formData.append('size', 8); formData.append('overwrite', true); formData.append('file', blob, 'something.txt'); const response = await fetch(endpoint, { method: 'POST', headers: { 'Authorization': `Bearer ${token}` }, body: formData }); return await response.json(); }, } ]; globalThis.reqex = request_examples; globalThis.service_script(api => { api.on_ready(() => { }); });