From b7cd09a0c6f8229bd3ed287d03e262c90a91155e Mon Sep 17 00:00:00 2001 From: Lycoon Date: Sun, 19 Nov 2023 15:01:54 +0100 Subject: [PATCH 1/7] feat: working on updating API --- .../java/com/lycoon/clashapi/core/ClashAPI.kt | 45 ++++++++++++------- .../clashapi/core/QueryParametersBuilder.kt | 21 +++++++++ .../models/capital/CapitalRaidSeason.kt | 19 ++++++++ .../models/capital/CapitalRaidSeasonAttack.kt | 10 +++++ .../capital/CapitalRaidSeasonAttackLog.kt | 12 +++++ .../capital/CapitalRaidSeasonAttacker.kt | 9 ++++ .../capital/CapitalRaidSeasonClanInfo.kt | 12 +++++ .../capital/CapitalRaidSeasonDefenseLog.kt | 12 +++++ .../capital/CapitalRaidSeasonDistrict.kt | 15 +++++++ .../models/capital/CapitalRaidSeasonMember.kt | 13 ++++++ .../com/lycoon/clashapi/models/clan/Clan.kt | 15 +++++-- .../lycoon/clashapi/models/clan/ClanList.kt | 6 --- .../lycoon/clashapi/models/clan/ClanMember.kt | 3 +- .../clashapi/models/clan/ClanMemberList.kt | 6 --- .../clashapi/models/clan/ClanRanking.kt | 2 +- .../clashapi/models/clan/ClanRankingList.kt | 6 --- .../clashapi/models/clan/ClanVersusRanking.kt | 6 ++- .../models/clan/ClanVersusRankingList.kt | 6 --- .../clashapi/models/common/BadgeUrls.kt | 6 ++- .../lycoon/clashapi/models/common/Label.kt | 6 ++- .../clashapi/models/common/LabelList.kt | 6 --- .../lycoon/clashapi/models/common/Language.kt | 6 ++- .../clashapi/models/common/LocationList.kt | 6 --- .../clashapi/models/common/TokenResponse.kt | 6 ++- .../{LeagueList.kt => BuilderBaseLeague.kt} | 15 ++++--- .../lycoon/clashapi/models/league/League.kt | 6 ++- .../models/league/LeagueSeasonList.kt | 6 --- .../models/league/LegendSeasonResult.kt | 6 ++- .../clashapi/models/player/Achievement.kt | 2 +- .../lycoon/clashapi/models/player/Player.kt | 23 +++++++--- .../clashapi/models/player/PlayerClan.kt | 7 ++- .../{PlayerRankingList.kt => PlayerHouse.kt} | 14 +++--- .../models/player/PlayerHouseElement.kt | 11 +++++ .../models/player/PlayerLegendStatistics.kt | 6 ++- .../clashapi/models/player/PlayerRanking.kt | 2 +- .../models/player/PlayerRankingClan.kt | 6 ++- .../models/player/PlayerVersusRanking.kt | 3 +- .../models/player/PlayerVersusRankingList.kt | 6 --- .../lycoon/clashapi/models/player/Troop.kt | 8 ++-- .../com/lycoon/clashapi/models/war/War.kt | 10 ++++- .../lycoon/clashapi/models/war/WarMember.kt | 2 +- .../lycoon/clashapi/models/war/WarlogClan.kt | 3 +- .../lycoon/clashapi/models/war/WarlogEntry.kt | 7 ++- .../clashapi/models/warleague/WarLeague.kt | 5 ++- .../models/warleague/WarLeagueGroup.kt | 6 ++- .../models/warleague/WarLeagueList.kt | 6 --- .../models/warleague/WarLeagueMember.kt | 6 ++- .../models/warleague/WarLeagueRound.kt | 4 +- src/test/java/ClashAPITest.kt | 27 ++++++++++- 49 files changed, 329 insertions(+), 122 deletions(-) create mode 100644 src/main/java/com/lycoon/clashapi/core/QueryParametersBuilder.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeason.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonAttack.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonAttackLog.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonAttacker.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonClanInfo.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonDefenseLog.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonDistrict.kt create mode 100644 src/main/java/com/lycoon/clashapi/models/capital/CapitalRaidSeasonMember.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/clan/ClanList.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/clan/ClanMemberList.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/clan/ClanRankingList.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/clan/ClanVersusRankingList.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/common/LabelList.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/common/LocationList.kt rename src/main/java/com/lycoon/clashapi/models/league/{LeagueList.kt => BuilderBaseLeague.kt} (54%) delete mode 100644 src/main/java/com/lycoon/clashapi/models/league/LeagueSeasonList.kt rename src/main/java/com/lycoon/clashapi/models/player/{PlayerRankingList.kt => PlayerHouse.kt} (59%) create mode 100644 src/main/java/com/lycoon/clashapi/models/player/PlayerHouseElement.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/player/PlayerVersusRankingList.kt delete mode 100644 src/main/java/com/lycoon/clashapi/models/warleague/WarLeagueList.kt diff --git a/src/main/java/com/lycoon/clashapi/core/ClashAPI.kt b/src/main/java/com/lycoon/clashapi/core/ClashAPI.kt index 6569f09..5672d63 100644 --- a/src/main/java/com/lycoon/clashapi/core/ClashAPI.kt +++ b/src/main/java/com/lycoon/clashapi/core/ClashAPI.kt @@ -4,19 +4,17 @@ import com.lycoon.clashapi.core.CoreUtils.deserialize import com.lycoon.clashapi.core.CoreUtils.formatTag import com.lycoon.clashapi.core.CoreUtils.checkResponse import com.lycoon.clashapi.core.exception.ClashAPIException +import com.lycoon.clashapi.models.capital.CapitalRaidSeason import com.lycoon.clashapi.models.clan.* import com.lycoon.clashapi.models.common.* import com.lycoon.clashapi.models.league.League -import com.lycoon.clashapi.models.league.LeagueList import com.lycoon.clashapi.models.league.LeagueSeason -import com.lycoon.clashapi.models.league.LeagueSeasonList import com.lycoon.clashapi.models.player.* import com.lycoon.clashapi.models.war.War import com.lycoon.clashapi.models.war.Warlog import com.lycoon.clashapi.models.war.WarlogEntry import com.lycoon.clashapi.models.warleague.WarLeague import com.lycoon.clashapi.models.warleague.WarLeagueGroup -import com.lycoon.clashapi.models.warleague.WarLeagueList import okhttp3.* import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody.Companion.toRequestBody @@ -153,7 +151,24 @@ class ClashAPI(private val token: String) { fun getClanMembers(clanTag: String): List { val tag = formatTag(clanTag) val res = get("/clans/$tag/members") - return deserialize(res).items + return deserialize(res) + } + + /** + * Returns the capital raid seasons of clan attached to the tag. + * + * @param clanTag `String` of the clan's tag + * @return List + * @see CapitalRaidSeason + * + * @throws IOException if the deserialization failed + * @throws ClashAPIException if the request to the game API failed + */ + @Throws(IOException::class, ClashAPIException::class) + fun getCapitalRaidSeasons(clanTag: String): List { + val tag = formatTag(clanTag) + val res = get("/clans/$tag/capitalraidseasons") + return deserialize(res) } /** @@ -203,7 +218,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getLeagues(): List { val res = get("/leagues") - return deserialize(res).items + return deserialize(res) } /** @@ -220,7 +235,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getLeagueSeasonRankings(leagueId: String, seasonId: String): List { val res = get("/leagues/$leagueId/seasons/$seasonId") - return deserialize(res).items + return deserialize(res) } /** @@ -252,7 +267,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getLeagueSeasons(leagueId: String): List { val res = get("/leagues/$leagueId/seasons") - return deserialize(res).items + return deserialize(res) } /** @@ -283,7 +298,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getWarLeagues(): List { val res = get("/warleagues") - return deserialize(res).items + return deserialize(res) } /** @@ -299,7 +314,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getClanRankings(locationId: String): List { val res = get("/locations/${locationId}/rankings/clans") - return deserialize(res).items + return deserialize(res) } /** @@ -315,7 +330,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getClanVersusRankings(locationId: String): List { val res = get("/locations/${locationId}/rankings/clans-versus") - return deserialize(res).items + return deserialize(res) } /** @@ -331,7 +346,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getPlayerRankings(locationId: String): List { val res = get("/locations/${locationId}/rankings/players") - return deserialize(res).items + return deserialize(res) } /** @@ -347,7 +362,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getPlayerVersusRankings(locationId: String): List { val res = get("/locations/${locationId}/rankings/players-versus") - return deserialize(res).items + return deserialize(res) } /** @@ -362,7 +377,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getLocations(): List { val res = get("/locations") - return deserialize(res).items + return deserialize(res) } /** @@ -393,7 +408,7 @@ class ClashAPI(private val token: String) { @Throws(IOException::class, ClashAPIException::class) fun getPlayerLabels(): List