feat: add API ratelimting
This commit is contained in:
		| @@ -5,6 +5,15 @@ const baseUrl = () => localStorage.isBeta ? "https://api.beta.pluralkit.me" : "h | |||||||
| const methods = ['get', 'post', 'delete', 'patch', 'put']; | const methods = ['get', 'post', 'delete', 'patch', 'put']; | ||||||
| const noop = () => {}; | const noop = () => {}; | ||||||
|  |  | ||||||
|  | const scheduled = []; | ||||||
|  | const runAPI = () => { | ||||||
|  |     if (scheduled.length == 0) return; | ||||||
|  |     const {axiosData, res, rej} = scheduled.shift(); | ||||||
|  |     axios(axiosData).then((resp) => res(parseData(resp.status, resp.data))).catch(rej); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | setInterval(runAPI, 500); | ||||||
|  |  | ||||||
| export default function() { | export default function() { | ||||||
|     const route = []; |     const route = []; | ||||||
|     const handler = { |     const handler = { | ||||||
| @@ -12,7 +21,7 @@ export default function() { | |||||||
|             if (route.length == 0 && name != "private") |             if (route.length == 0 && name != "private") | ||||||
|                 route.push("v2"); |                 route.push("v2"); | ||||||
|             if (methods.includes(name)) { |             if (methods.includes(name)) { | ||||||
|                 return ({ data = undefined, auth = true, token = null, query = null } = {}) => new Promise((res, rej) => axios({ |                 return ({ data = undefined, auth = true, token = null, query = null } = {}) => new Promise((res, rej) => scheduled.push({ res, rej, axiosData: { | ||||||
|                     url: baseUrl() + "/" + route.join("/") + (query ? `?${Object.keys(query).map(x => `${x}=${query[x]}`).join("&")}` : ""), |                     url: baseUrl() + "/" + route.join("/") + (query ? `?${Object.keys(query).map(x => `${x}=${query[x]}`).join("&")}` : ""), | ||||||
|                     method: name, |                     method: name, | ||||||
|                     headers: { |                     headers: { | ||||||
| @@ -21,7 +30,7 @@ export default function() { | |||||||
|                     }, |                     }, | ||||||
|                     data: !!data ? JSON.stringify(data) : undefined, |                     data: !!data ? JSON.stringify(data) : undefined, | ||||||
|                     validateStatus: () => true, |                     validateStatus: () => true, | ||||||
|                 }).then((resp) => res(parseData(resp.status, resp.data))).catch(rej)); |                 }})); | ||||||
|             } |             } | ||||||
|             route.push(name); |             route.push(name); | ||||||
|             return new Proxy(noop, handler); |             return new Proxy(noop, handler); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user