Skip to content

Commit

Permalink
Implement support for SkyBlock fire sales (#601)
Browse files Browse the repository at this point in the history
  • Loading branch information
ConnorLinfoot committed Jun 26, 2023
1 parent 8fc9852 commit 9961ed3
Show file tree
Hide file tree
Showing 9 changed files with 113 additions and 31 deletions.
59 changes: 33 additions & 26 deletions hypixel-api-core/src/main/java/net/hypixel/api/HypixelAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.hypixel.api.reply.*;
import net.hypixel.api.reply.skyblock.*;
import net.hypixel.api.reply.skyblock.bingo.SkyBlockBingoDataReply;
import net.hypixel.api.reply.skyblock.firesales.SkyBlockFireSalesReply;
import net.hypixel.api.util.PropertyFilter;
import net.hypixel.api.util.ResourceType;
import net.hypixel.api.util.Utilities;
Expand Down Expand Up @@ -39,23 +40,23 @@ public void shutdown() {
}

public CompletableFuture<BoostersReply> getBoosters() {
return get(BoostersReply.class, "boosters");
return get(true, BoostersReply.class, "boosters");
}

public CompletableFuture<LeaderboardsReply> getLeaderboards() {
return get(LeaderboardsReply.class, "leaderboards");
return get(true, LeaderboardsReply.class, "leaderboards");
}

public CompletableFuture<PunishmentStatsReply> getPunishmentStats() {
return get(PunishmentStatsReply.class, "punishmentstats");
return get(true, PunishmentStatsReply.class, "punishmentstats");
}

/**
* @param player uuid of a player
* @return {@link CompletableFuture} containing {@link PlayerReply}
*/
public CompletableFuture<PlayerReply> getPlayerByUuid(UUID player) {
return get(PlayerReply.class, "player",
return get(true, PlayerReply.class, "player",
HTTPQueryParams.create()
.add("uuid", player)
);
Expand All @@ -66,7 +67,7 @@ public CompletableFuture<PlayerReply> getPlayerByUuid(UUID player) {
* @return {@link CompletableFuture} containing {@link PlayerReply}
*/
public CompletableFuture<PlayerReply> getPlayerByUuid(String player) {
return get(PlayerReply.class, "player",
return get(true, PlayerReply.class, "player",
HTTPQueryParams.create()
.add("uuid", player)
);
Expand Down Expand Up @@ -106,7 +107,7 @@ public CompletableFuture<PlayerReply> getPlayerByName(String player, PropertyFil
*/
@Deprecated
public CompletableFuture<PlayerReply> getPlayerByName(String player) {
return get(PlayerReply.class, "player",
return get(true, PlayerReply.class, "player",
HTTPQueryParams.create()
.add("name", player)
);
Expand All @@ -117,7 +118,7 @@ public CompletableFuture<PlayerReply> getPlayerByName(String player) {
* @return {@link CompletableFuture} containing {@link GuildReply}
*/
public CompletableFuture<GuildReply> getGuildByPlayer(UUID player) {
return get(GuildReply.class, "guild",
return get(true, GuildReply.class, "guild",
HTTPQueryParams.create()
.add("player", player)
);
Expand All @@ -128,7 +129,7 @@ public CompletableFuture<GuildReply> getGuildByPlayer(UUID player) {
* @return {@link CompletableFuture} containing {@link GuildReply}
*/
public CompletableFuture<GuildReply> getGuildByPlayer(String player) {
return get(GuildReply.class, "guild",
return get(true, GuildReply.class, "guild",
HTTPQueryParams.create()
.add("player", player)
);
Expand All @@ -139,7 +140,7 @@ public CompletableFuture<GuildReply> getGuildByPlayer(String player) {
* @return {@link CompletableFuture} containing {@link GuildReply}
*/
public CompletableFuture<GuildReply> getGuildByName(String name) {
return get(GuildReply.class, "guild",
return get(true, GuildReply.class, "guild",
HTTPQueryParams.create()
.add("name", name)
);
Expand All @@ -150,7 +151,7 @@ public CompletableFuture<GuildReply> getGuildByName(String name) {
* @return {@link CompletableFuture} containing {@link GuildReply}
*/
public CompletableFuture<GuildReply> getGuildById(String id) {
return get(GuildReply.class, "guild",
return get(true, GuildReply.class, "guild",
HTTPQueryParams.create()
.add("id", id)
);
Expand All @@ -161,11 +162,11 @@ public CompletableFuture<GuildReply> getGuildById(String id) {
*/
@Deprecated
public CompletableFuture<KeyReply> getKey() {
return get(KeyReply.class, "key");
return get(true, KeyReply.class, "key");
}

public CompletableFuture<CountsReply> getCounts() {
return get(CountsReply.class, "counts");
return get(true, CountsReply.class, "counts");
}

/**
Expand All @@ -177,7 +178,7 @@ public CompletableFuture<CountsReply> getCounts() {
* @return {@link CompletableFuture} containing {@link StatusReply}
*/
public CompletableFuture<StatusReply> getStatus(UUID uuid) {
return get(StatusReply.class, "status",
return get(true, StatusReply.class, "status",
HTTPQueryParams.create()
.add("uuid", uuid)
);
Expand All @@ -190,7 +191,7 @@ public CompletableFuture<StatusReply> getStatus(UUID uuid) {
* @return {@link CompletableFuture} containing {@link RecentGamesReply}
*/
public CompletableFuture<RecentGamesReply> getRecentGames(UUID uuid) {
return get(RecentGamesReply.class, "recentGames",
return get(true, RecentGamesReply.class, "recentGames",
HTTPQueryParams.create()
.add("uuid", uuid)
);
Expand All @@ -216,7 +217,7 @@ public CompletableFuture<IPetRepository> getPetRepository() {
}

public CompletableFuture<SkyBlockProfileReply> getSkyBlockProfile(String profile) {
return get(SkyBlockProfileReply.class, "skyblock/profile",
return get(true, SkyBlockProfileReply.class, "skyblock/profile",
HTTPQueryParams.create()
.add("profile", profile)
);
Expand All @@ -227,7 +228,7 @@ public CompletableFuture<SkyBlockProfileReply> getSkyBlockProfile(String profile
* @return the future
*/
public CompletableFuture<SkyBlockProfilesReply> getSkyBlockProfiles(UUID player) {
return get(SkyBlockProfilesReply.class, "skyblock/profiles",
return get(true, SkyBlockProfilesReply.class, "skyblock/profiles",
HTTPQueryParams.create()
.add("uuid", player)
);
Expand All @@ -238,7 +239,7 @@ public CompletableFuture<SkyBlockProfilesReply> getSkyBlockProfiles(UUID player)
* @return the future
*/
public CompletableFuture<SkyBlockProfilesReply> getSkyBlockProfiles(String player) {
return get(SkyBlockProfilesReply.class, "skyblock/profiles",
return get(true, SkyBlockProfilesReply.class, "skyblock/profiles",
HTTPQueryParams.create()
.add("uuid", player)
);
Expand All @@ -251,7 +252,7 @@ public CompletableFuture<SkyBlockProfilesReply> getSkyBlockProfiles(String playe
* @return CompletableFuture containing a {@link SkyBlockBingoDataReply}
*/
public CompletableFuture<SkyBlockBingoDataReply> getSkyblockBingoData(UUID player) {
return get(SkyBlockBingoDataReply.class, "skyblock/bingo",
return get(true, SkyBlockBingoDataReply.class, "skyblock/bingo",
HTTPQueryParams.create()
.add("uuid", player)
);
Expand All @@ -264,18 +265,18 @@ public CompletableFuture<SkyBlockBingoDataReply> getSkyblockBingoData(UUID playe
* @return CompletableFuture containing a {@link SkyBlockBingoDataReply}
*/
public CompletableFuture<SkyBlockBingoDataReply> getSkyblockBingoData(String player) {
return get(SkyBlockBingoDataReply.class, "skyblock/bingo",
return get(true, SkyBlockBingoDataReply.class, "skyblock/bingo",
HTTPQueryParams.create()
.add("uuid", player)
);
}

public CompletableFuture<SkyBlockNewsReply> getSkyBlockNews() {
return get(SkyBlockNewsReply.class, "skyblock/news");
return get(true, SkyBlockNewsReply.class, "skyblock/news");
}

public CompletableFuture<SkyBlockAuctionsReply> getSkyBlockAuctions(int page) {
return get(SkyBlockAuctionsReply.class, "skyblock/auctions",
return get(false, SkyBlockAuctionsReply.class, "skyblock/auctions",
HTTPQueryParams.create()
.add("page", page)
);
Expand All @@ -287,7 +288,11 @@ public CompletableFuture<SkyBlockAuctionsReply> getSkyBlockAuctions(int page) {
* @return {@link CompletableFuture} containing {@link SkyBlockBazaarReply}
*/
public CompletableFuture<SkyBlockBazaarReply> getSkyBlockBazaar() {
return get(SkyBlockBazaarReply.class, "skyblock/bazaar");
return get(false, SkyBlockBazaarReply.class, "skyblock/bazaar");
}

public CompletableFuture<SkyBlockFireSalesReply> getSkyBlockFireSales() {
return get(false, SkyBlockFireSalesReply.class, "skyblock/firesales");
}

/**
Expand All @@ -300,16 +305,18 @@ private CompletableFuture<PlayerReply> applyFilterFuture(CompletableFuture<Playe
});
}

private <R extends AbstractReply> CompletableFuture<R> get(Class<R> clazz, String request) {
return get(clazz, request, null);
private <R extends AbstractReply> CompletableFuture<R> get(boolean authenticated, Class<R> clazz, String request) {
return get(authenticated, clazz, request, null);
}

private <R extends AbstractReply> CompletableFuture<R> get(Class<R> clazz, String request, HTTPQueryParams params) {
private <R extends AbstractReply> CompletableFuture<R> get(boolean authenticated, Class<R> clazz, String request, HTTPQueryParams params) {
String url = BASE_URL + request;
if (params != null) {
url = params.getAsQueryString(url);
}
return httpClient.makeAuthenticatedRequest(url)

CompletableFuture<HypixelHttpResponse> future = authenticated ? httpClient.makeAuthenticatedRequest(url) : httpClient.makeRequest(url);
return future
.thenApply(this::checkResponse)
.thenApply(response -> {
if (clazz == ResourceReply.class) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package net.hypixel.api.reply.skyblock.firesales;

import com.google.gson.annotations.SerializedName;

import java.time.ZonedDateTime;

public class FireSaleItem {
@SerializedName("item_id")
private String itemId;
private ZonedDateTime start;
private ZonedDateTime end;
private int amount;
private int price;

public String getItemId() {
return itemId;
}

public ZonedDateTime getStart() {
return start;
}

public ZonedDateTime getEnd() {
return end;
}

public int getAmount() {
return amount;
}

public int getPrice() {
return price;
}

@Override
public String toString() {
return "FireSaleItem{" +
"itemId='" + itemId + '\'' +
", start=" + start +
", end=" + end +
", amount=" + amount +
", price=" + price +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package net.hypixel.api.reply.skyblock.firesales;

import net.hypixel.api.reply.AbstractReply;

import java.util.List;

public class SkyBlockFireSalesReply extends AbstractReply {
private List<FireSaleItem> sales;

public List<FireSaleItem> getSales() {
return sales;
}

@Override
public String toString() {
return "SkyBlockFireSalesReply{" +
"sales=" + sales +
"} " + super.toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.hypixel.api.example.ExampleUtil;

public class GetSkyBlockAuctionsExample {
public class GetAuctionsExample {
public static void main(String[] args) {
ExampleUtil.API.getSkyBlockAuctions(0).whenComplete((page0, throwable) -> {
if (throwable != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.hypixel.api.example.ExampleUtil;

public class GetSkyBlockBingoDataExample {
public class GetBingoDataExample {
public static void main(String[] args) {
ExampleUtil.API.getSkyblockBingoData(ExampleUtil.HYPIXEL).whenComplete(ExampleUtil.getTestConsumer());
ExampleUtil.await();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package net.hypixel.api.example.skyblock;

import net.hypixel.api.example.ExampleUtil;

public class GetFireSalesExample {
public static void main(String[] args) {
ExampleUtil.API.getSkyBlockFireSales().whenComplete(ExampleUtil.getTestConsumer());
ExampleUtil.await();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.hypixel.api.example.ExampleUtil;

public class GetSkyBlockNewsExample {
public class GetNewsExample {
public static void main(String[] args) {
ExampleUtil.API.getSkyBlockNews().whenComplete(ExampleUtil.getTestConsumer());
ExampleUtil.await();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import java.util.Set;
import java.util.concurrent.CompletableFuture;

public class GetSkyBlockProfileExample {
public class GetProfileExample {

public static void main(String[] args) {
ExampleUtil.API.getPlayerByUuid(ExampleUtil.HYPIXEL).whenComplete((reply, error) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.hypixel.api.example.ExampleUtil;

public class GetSkyBlockProfilesExample {
public class GetProfilesExample {
public static void main(String[] args) {
ExampleUtil.API.getSkyBlockProfiles(ExampleUtil.HYPIXEL).whenComplete(ExampleUtil.getTestConsumer());
ExampleUtil.await();
Expand Down

0 comments on commit 9961ed3

Please sign in to comment.