mirror of
https://github.com/openvk/openvk
synced 2025-02-10 16:59:39 +03:00
69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
window.API = new Proxy(Object.create(null), {
|
|
get(apiObj, name, recv) {
|
|
if(name === "Types")
|
|
return apiObj.Types;
|
|
|
|
return new Proxy(new window.String(name), {
|
|
get(classSymbol, method, recv) {
|
|
return ((...args) => {
|
|
return new Promise((resolv, rej) => {
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open("POST", "/rpc", true);
|
|
xhr.responseType = "arraybuffer";
|
|
|
|
xhr.onload = e => {
|
|
let resp = msgpack.decode(new Uint8Array(e.target.response));
|
|
if(typeof resp.error !== "undefined")
|
|
rej(resp.error);
|
|
else
|
|
resolv(resp.result);
|
|
};
|
|
|
|
xhr.send(msgpack.encode({
|
|
"brpc": 1,
|
|
"method": `${classSymbol.toString()}.${method}`,
|
|
"params": args
|
|
}));
|
|
});
|
|
})
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
window.API.Types = {};
|
|
window.API.Types.Message = (class Message {
|
|
|
|
});
|
|
|
|
window.OVKAPI = new class {
|
|
async call(method, params) {
|
|
if(!method) {
|
|
return
|
|
}
|
|
|
|
const form_data = new FormData
|
|
Object.entries(params).forEach(fd => {
|
|
form_data.append(fd[0], fd[1])
|
|
})
|
|
|
|
const __url_params = new URLSearchParams
|
|
__url_params.append("v", "5.200")
|
|
if(window.openvk.current_id != 0) {
|
|
__url_params.append("auth_mechanism", "roaming")
|
|
}
|
|
|
|
const url = `/method/${method}?${__url_params.toString()}`
|
|
const res = await fetch(url, {
|
|
method: "POST",
|
|
body: form_data,
|
|
})
|
|
const json_response = await res.json()
|
|
|
|
if(json_response.response) {
|
|
return json_response.response
|
|
} else {
|
|
throw new Error(json_response.error_msg)
|
|
}
|
|
}
|
|
}
|