forked from Irfanwibu/Jarspy-Bot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuploadFile.js
More file actions
56 lines (54 loc) · 1.41 KB
/
Copy pathuploadFile.js
File metadata and controls
56 lines (54 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import fetch from 'node-fetch'
import { FormData, Blob } from 'formdata-node'
import { fileTypeFromBuffer } from 'file-type'
/**
* Upload epheremal file to file.io
* `Expired in 1 day`
* `100MB Max Filesize`
* @param {Buffer} buffer File Buffer
*/
const fileIO = async buffer => {
const { ext, mime } = await fileTypeFromBuffer(buffer) || {}
let form = new FormData()
const blob = new Blob([buffer.toArrayBuffer()], { type: mime })
form.append('file', blob, 'tmp.' + ext)
let res = await fetch('https://file.io/?expires=1d', { // 1 Day Expiry Date
method: 'POST',
body: form
})
let json = await res.json()
if (!json.success) throw json
return json.link
}
/**
* Upload file to https://file.botcahx.eu.org/
* @returns {string|null|(string|null)[]}
*/
const apicahx = async (buffer) => {
let { ext } = await fromBuffer(buffer);
let bodyForm = new FormData();
bodyForm.append('file', buffer, 'tmp.' + ext);
let res = await fetch("https://file.botcahx.eu.org/api/upload.php", {
method: "post",
body: bodyForm,
});
let data = await res.json();
let resultUrl = data.result ? data.result.url : '';
return resultUrl;
}
/**
*
* @param {Buffer} inp
* @returns {Promise<string>}
*/
export default async function (inp) {
let err = false
for (let upload of [apicahx, fileIO]) {
try {
return await upload(inp)
} catch (e) {
err = e
}
}
if (err) throw err
}