tetrio-node
Version:
81 lines (78 loc) • 2.46 kB
JavaScript
const Record = require("./Record.js");
/**
* A user.
* @prop {String} id
* @prop {String} username
* @prop {String} role
* @prop {Array} badges
* @prop {Number} exp
* @prop {Number} gamesPlayed
* @prop {Number} gamesWon
* @prop {Number} secondsPlayed
* @prop {String} country
* @prop {Boolean} isSupporter
* @prop {Boolean} isVerified
* @prop {Object} records
* @prop {Record} records.sprint
* @prop {Number} records.sprintRank
* @prop {Record} records.blitz
* @prop {Number} records.blitzRank
* @prop {Object} tetraLeague
* @prop {Number} tetraLeague.gamesPlayed
* @prop {Number} tetraLeague.gamesWon
* @prop {Number} tetraLeague.rating
* @prop {Number} tetraLeague.glicko
* @prop {Number} tetraLeague.rd
* @prop {String} tetraLeague.rank
* @prop {Number} tetraLeague.apm
* @prop {Number} tetraLeague.pps
* @prop {Number} tetraLeague.vs
* @prop {Number} tetraLeague.standing
* @prop {String} joinDate
*/
class User {
constructor(data) {
this.id = data._id || null;
this.username = data.username;
this.role = data.role;
this.badges = data.badges;
this.exp = data.xp;
this.gamesPlayed = data.gamesplayed;
this.gamesWon = data.gameswon;
this.secondsPlayed = data.gametime;
this.country = data.country;
this.isVerified = data.verified || undefined;
this.isSupporter = data.supporter || undefined;
if (data.records) {
this.records = {
sprint: data.records["40l"].record
? new Record(data.records["40l"].record)
: null,
sprintRank: data.records["40l"].rank ? data.records["40l"].rank : null,
blitz: data.records.blitz.record
? new Record(data.records.blitz.record)
: null,
blitzRank: data.records.blitz.rank ? data.records.blitz.rank : null,
};
}
if (data.league) {
this.tetraLeague = {
gamesPlayed: data.league.gamesplayed,
gamesWon: data.league.gameswon,
rating: data.league.rating,
glicko: data.league.glicko,
rd: data.league.rd,
rank: data.league.rank,
apm: data.league.apm,
pps: data.league.pps,
vs: data.league.vs,
standing: data.league.standing,
};
}
this.joinDate = data.ts;
Object.keys(this).forEach((key) =>
this[key] === undefined ? delete this[key] : {}
);
}
}
module.exports = User;