2022-01-29 20:01:45 +00:00
|
|
|
import { ifetch } from "./platform";
|
2022-01-16 15:47:13 +00:00
|
|
|
|
|
|
|
function parseForm(data: object) {
|
|
|
|
const form = new FormData();
|
|
|
|
|
|
|
|
Object.entries(data)
|
|
|
|
.filter(([key, value]) => value !== null)
|
|
|
|
.map(([key, value]) => form.append(key, value));
|
|
|
|
|
|
|
|
return form;
|
|
|
|
}
|
|
|
|
|
2022-01-16 16:12:57 +00:00
|
|
|
export const lolisafe = (domain: string, serving = domain) => ({
|
|
|
|
domain,
|
|
|
|
serving,
|
|
|
|
async uploadFile(f: Blob) {
|
2022-01-29 20:01:45 +00:00
|
|
|
const resp = await ifetch(`https://${domain}/api/upload`, {
|
2022-01-16 16:12:57 +00:00
|
|
|
headers: {
|
|
|
|
accept: "application/json",
|
|
|
|
},
|
|
|
|
"body": parseForm({
|
|
|
|
reqtype: 'fileupload',
|
|
|
|
'files[]': new File([f], 'f.pee')
|
|
|
|
}),
|
|
|
|
"method": "POST",
|
|
|
|
});
|
|
|
|
const res = (await resp.json()) as { success: boolean, files: { url: string, name: string, size: number }[] };
|
|
|
|
return res.files.map(e => e.url)[0];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export const catbox = (domain: string, serving: string) => ({
|
2022-01-16 15:47:13 +00:00
|
|
|
domain,
|
2022-01-16 16:12:57 +00:00
|
|
|
serving,
|
2022-01-16 15:47:13 +00:00
|
|
|
async uploadFile(inj: Blob) {
|
2022-01-29 20:01:45 +00:00
|
|
|
const resp = await ifetch(`https://${domain}/user/api.php`, {
|
2022-01-16 15:47:13 +00:00
|
|
|
method: 'POST',
|
|
|
|
body: parseForm({
|
|
|
|
reqtype: 'fileupload',
|
|
|
|
fileToUpload: inj
|
|
|
|
})
|
|
|
|
});
|
|
|
|
return resp.text();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export type API = {
|
|
|
|
domain: string;
|
2022-01-16 16:12:57 +00:00
|
|
|
serving: string;
|
2022-01-16 15:47:13 +00:00
|
|
|
uploadFile(f: Blob): Promise<string>;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const filehosts: API[] = [
|
2022-01-16 16:12:57 +00:00
|
|
|
catbox('catbox.moe', 'files.catbox.moe'),
|
|
|
|
lolisafe('zz.ht', 'z.zz.fo'),
|
2022-01-16 15:47:13 +00:00
|
|
|
lolisafe('imouto.kawaii.su'),
|
|
|
|
lolisafe('take-me-to.space'),
|
|
|
|
];
|