2024-03-05 10:20:36 +00:00

59 lines
1.7 KiB
JavaScript
Executable File

import axios from "axios"
export default class VRCApi {
static base_api_hostname = "https://api.vrchat.cloud/api/1"
static get interface() {
return axios.create({
baseURL: VRCApi.base_api_hostname,
headers: {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.142.86 Safari/537.36",
}
})
}
static async auth({ username, password }, access_token) {
username = encodeURIComponent(username)
password = encodeURIComponent(password)
let headers = {
"Authorization": `Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`
}
if (access_token) {
delete headers["Authorization"]
headers["Cookie"] = `${access_token}`
}
const response = await VRCApi.interface({
method: "GET",
url: "/auth/user",
headers,
})
if (!access_token && response.headers["set-cookie"]) {
response.data.cookie = response.headers["set-cookie"][0].split(";")[0]
}
return response.data
}
static async verifyOtp({ type, code }, access_token) {
const response = await VRCApi.interface({
method: "POST",
url: `/auth/twofactorauth/${type}/verify`,
data: {
code: code
},
headers: {
"Cookie": `${access_token}`
},
})
if (!access_token && response.headers["set-cookie"]) {
response.data.cookie = response.headers["set-cookie"][0].split(";")[0]
}
return response.data
}
}