Skip to content

Commit

Permalink
releaseb fixing the issue with 429 code
Browse files Browse the repository at this point in the history
  • Loading branch information
Sammers21 committed Jul 15, 2023
1 parent 6f28372 commit 9406ffa
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 21 deletions.
4 changes: 0 additions & 4 deletions src/io/github/sammers/pla/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
import io.github.sammers.pla.blizzard.BlizzardAPI;
import io.github.sammers.pla.db.DB;
import io.github.sammers.pla.http.Http;
import io.github.sammers.pla.http.JsonConvertable;
import io.github.sammers.pla.logic.Ladder;
import io.reactivex.Scheduler;
import io.reactivex.schedulers.Schedulers;
import io.vertx.core.VertxOptions;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.reactivex.core.Vertx;
import io.vertx.reactivex.ext.mongo.MongoClient;
Expand All @@ -17,12 +15,10 @@

import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import static io.github.sammers.pla.logic.Ladder.EU;
import static java.time.format.DateTimeFormatter.ISO_DATE_TIME;

public class Main {
Expand Down
21 changes: 21 additions & 0 deletions src/io/github/sammers/pla/blizzard/Achievements.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.github.sammers.pla.blizzard;

import io.github.sammers.pla.http.JsonConvertable;
import io.vertx.core.json.JsonObject;

public record Achievements() implements JsonConvertable {

public static Achievements parse(JsonObject achievements) {
return new Achievements();
}

public static Achievements fromJson(JsonObject json) {
return new Achievements();
}

@Override
public JsonObject toJson() {
return new JsonObject();
}

}
3 changes: 3 additions & 0 deletions src/io/github/sammers/pla/blizzard/BlizzardAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,9 @@ Maybe<JsonObject> maybeResponse(String namespace, String url) {
.flatMapMaybe(resp -> {
if (resp.statusCode() == 200) {
return Maybe.just(resp.bodyAsJsonObject());
} else if (resp.statusCode() == 429){
log.info("429 Retrying " + url + " " + resp.statusMessage());
return rpsToken().andThen(rpsToken()).andThen(maybeResponse(namespace, url));
} else {
return Maybe.error(new IllegalStateException("Error getting " + url + " " + resp.statusCode() + " " + resp.statusMessage() + " " + resp.bodyAsString()));
}
Expand Down
21 changes: 4 additions & 17 deletions src/io/github/sammers/pla/blizzard/WowAPICharacter.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
*/
public record WowAPICharacter(long id, String name, String realm, String gender, String fraction, String race,
String activeSpec, int level, String clazz, int itemLevel, String region,
List<PvpBracket> brackets, Long lastUpdatedUTCms, Set<String> pvpTitles,
List<PvpBracket> brackets, Long lastUpdatedUTCms, Achievements achievements ,
CharacterMedia media, String talents) implements JsonConvertable {

public static WowAPICharacter parse(
Expand All @@ -147,19 +147,6 @@ public static WowAPICharacter parse(
.orElse("");
List<PvpBracket> list = brackets.stream().map(PvpBracket::parse).toList();
CharacterMedia media = CharacterMedia.parse(characterMedia);
Set<String> pvpTitles = achievements.getJsonArray("achievements").stream()
.map(s -> ((JsonObject)s).getJsonObject("achievement").getString("name"))
.filter(s -> {
boolean r1Glad = s.matches("(\\w+)\\h(Gladiator|Legend)(.*)");
return s.startsWith("Gladiator")
|| s.startsWith("Duelist")
|| s.startsWith("Rival")
|| s.startsWith("Challenger")
|| s.startsWith("Combatant")
|| s.startsWith("Legend")
|| r1Glad;
})
.collect(Collectors.toSet());
Long lastUpdatedUTCms = Instant.now().toEpochMilli();
String name = entries.getString("name").substring(0, 1).toUpperCase() + entries.getString("name").substring(1);
String realm = entries.getJsonObject("realm").getString("name").substring(0, 1).toUpperCase() +
Expand All @@ -178,7 +165,7 @@ public static WowAPICharacter parse(
region,
list,
lastUpdatedUTCms,
pvpTitles,
Achievements.parse(achievements),
media,
talents
);
Expand Down Expand Up @@ -213,7 +200,7 @@ public static WowAPICharacter fromJson(JsonObject entries) {
entries.getString("region"),
brcktsFromJson,
entries.getLong("lastUpdatedUTCms"),
Optional.ofNullable(entries.getJsonArray("pvpTitles")).map(x -> x.stream().map(o -> (String) o).collect(Collectors.toSet())).orElse(Set.of()),
Achievements.fromJson(entries.getJsonObject("achievements")),
CharacterMedia.fromJson(entries.getJsonObject("media")),
Optional.ofNullable(entries.getString("talents")).orElse("")
);
Expand All @@ -235,7 +222,7 @@ public JsonObject toJson() {
.put("region", region)
.put("lastUpdatedUTCms", lastUpdatedUTCms)
.put("brackets", new JsonArray(brackets.stream().map(PvpBracket::toJson).toList()))
.put("pvpTitles", new JsonArray(pvpTitles.stream().toList()))
.put("achievements", achievements.toJson())
.put("media", media.toJson())
.put("talents", talents);
}
Expand Down

0 comments on commit 9406ffa

Please sign in to comment.