UNPKG

sprcl

Version:

Simple API client for Clash of Clans, Clash Royale, and Brawl Stars

68 lines (58 loc) 2.15 kB
class Clan { constructor(data) { this.tag = data.tag; this.name = data.name; this.type = data.type; this.description = data.description; this.location = data.location; this.isFamilyFriendly = data.isFamilyFriendly; this.badgeUrls = data.badgeUrls; this.clanLevel = data.clanLevel; this.clanPoints = data.clanPoints; this.clanBuilderBasePoints = data.clanBuilderBasePoints; this.clanCapitalPoints = data.clanCapitalPoints; this.capitalLeague = data.capitalLeague; this.requiredTrophies = data.requiredTrophies; this.warFrequency = data.warFrequency; this.warWinStreak = data.warWinStreak; this.warWins = data.warWins; this.warTies = data.warTies; this.warLosses = data.warLosses; this.isWarLogPublic = data.isWarLogPublic; this.warLeague = data.warLeague; this.members = data.members; this.memberList = data.memberList; this.labels = data.labels; this.requiredBuilderBaseTrophies = data.requiredBuilderBaseTrophies; this.requiredTownhallLevel = data.requiredTownhallLevel; this.clanCapital = data.clanCapital; this.chatLanguage = data.chatLanguage; } static fromJSON(json) { return new Clan(json); } // Métodos adicionales útiles getLeader() { return this.memberList.find(member => member.role === 'leader'); } getCoLeaders() { return this.memberList.filter(member => member.role === 'coLeader'); } getAdmins() { return this.memberList.filter(member => member.role === 'admin'); } getMembers() { return this.memberList.filter(member => member.role === 'member'); } getMemberCount() { return this.members; } getAverageTownHallLevel() { const sum = this.memberList.reduce((acc, member) => acc + member.townHallLevel, 0); return sum / this.members; } getTotalDonations() { return this.memberList.reduce((acc, member) => acc + member.donations, 0); } } module.exports = { Clan };