@furox/minecraft-java-core
Version:
A library starting minecraft game NW.js and Electron.js
139 lines (138 loc) • 3.86 kB
JavaScript
;
/**
* @author Luuxis
* @license CC-BY-NC 4.0 - https://creativecommons.org/licenses/by-nc/4.0/
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ChangeAuthApi = exports.signout = exports.validate = exports.refresh = exports.login = void 0;
const crypto_1 = __importDefault(require("crypto"));
const node_fetch_1 = __importDefault(require("node-fetch"));
let api_url = 'https://authserver.mojang.com';
async function login(username, password) {
let UUID = crypto_1.default.randomBytes(16).toString('hex');
if (!password) {
return {
access_token: UUID,
client_token: UUID,
uuid: UUID,
name: username,
user_properties: '{}',
meta: {
online: false,
type: 'Mojang'
}
};
}
let post = {
agent: {
name: "Minecraft",
version: 1
},
username,
password,
clientToken: UUID,
requestUser: true
};
let message = await (0, node_fetch_1.default)(`${api_url}/authenticate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(post)
}).then(res => res.json());
if (message.error) {
return message;
}
;
let user = {
access_token: message.accessToken,
client_token: message.clientToken,
uuid: message.selectedProfile.id,
name: message.selectedProfile.name,
user_properties: '{}',
meta: {
online: true,
type: 'Mojang'
}
};
return user;
}
exports.login = login;
async function refresh(acc) {
let post = {
accessToken: acc.access_token,
clientToken: acc.client_token,
requestUser: true
};
let message = await (0, node_fetch_1.default)(`${api_url}/refresh`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(post)
}).then(res => res.json());
if (message.error) {
return message;
}
;
let user = {
access_token: message.accessToken,
client_token: message.clientToken,
uuid: message.selectedProfile.id,
name: message.selectedProfile.name,
user_properties: '{}',
meta: {
online: true,
type: 'Mojang'
}
};
return user;
}
exports.refresh = refresh;
async function validate(acc) {
let post = {
accessToken: acc.access_token,
clientToken: acc.client_token,
};
let message = await (0, node_fetch_1.default)(`${api_url}/validate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(post)
});
if (message.status == 204) {
return true;
}
else {
return false;
}
}
exports.validate = validate;
async function signout(acc) {
let post = {
accessToken: acc.access_token,
clientToken: acc.client_token,
};
let message = await (0, node_fetch_1.default)(`${api_url}/invalidate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(post)
}).then(res => res.text());
if (message == "") {
return true;
}
else {
return false;
}
}
exports.signout = signout;
function ChangeAuthApi(url) {
api_url = url;
}
exports.ChangeAuthApi = ChangeAuthApi;