Browse Source

steamdata fetch fix

master
gsd 2 weeks ago
parent
commit
db04ae0b64
  1. 4
      src/main/java/app/services/db/BanService.java
  2. 21
      src/main/java/app/services/steam/SteamWebApi.java

4
src/main/java/app/services/db/BanService.java

@ -89,8 +89,8 @@ public class BanService {
jdbcTemplate.update("INSERT INTO light_bans (steam_id, account_id, ban_length, ban_reason, banned_by_id, active, ip, player_name, banned_by) VALUES (?,?,?,?,?,?,?,?,?)", jdbcTemplate.update("INSERT INTO light_bans (steam_id, account_id, ban_length, ban_reason, banned_by_id, active, ip, player_name, banned_by) VALUES (?,?,?,?,?,?,?,?,?)",
user.getSteamids().steam2, user.getSteamids().account_id, ban_length, ban_reason, admin.getSteamids().steam2, true, user.getSteamids().steam2, user.getSteamids().account_id, ban_length, ban_reason, admin.getSteamids().steam2, true,
user.getPlay_on() != null ? user.getPlay_on().getIp(cryptedCookie) : "", user.getPlay_on() != null ? user.getPlay_on().getIp(cryptedCookie) : "",
user.getPlay_on() != null ? user.getPlay_on().getName() : user.getSteam_data().getNickname(), user.getPlay_on() != null ? user.getPlay_on().getName() : user.getSteam_data() == null ? "player" : user.getSteam_data().getNickname(),
admin.getSteam_data().getNickname()); admin.getSteam_data() == null ? "admin" :admin.getSteam_data().getNickname());
serverService.kickPlayer(user, "banned"); serverService.kickPlayer(user, "banned");
return getBan(user.getSteamids()).getId(); return getBan(user.getSteamids()).getId();
} }

21
src/main/java/app/services/steam/SteamWebApi.java

@ -36,7 +36,7 @@ public class SteamWebApi {
//todo mb store in db //todo mb store in db
private final HashMap<Long, SteamData> steamDataCache = new HashMap<>(); private final HashMap<Long, SteamData> steamDataCache = new HashMap<>();
private final HashMap<String, SteamID> steamIdCache = new HashMap<>(); private final HashMap<String, SteamID> steamIdCache = new HashMap<>();
private static final int cache_lifetime = 60 * 60 * 24; private static final int cache_lifetime = 60 * 60 * 24 * 3;
//mojno bilo sdelat 4erez spring cache no ne hochu //mojno bilo sdelat 4erez spring cache no ne hochu
public SteamData getSteamData(long steam64) { public SteamData getSteamData(long steam64) {
@ -44,7 +44,7 @@ public class SteamWebApi {
return steamDataCache.get(steam64); return steamDataCache.get(steam64);
} else { } else {
try { try {
SteamData result = this.getSteamDataFromSteam(steam64); SteamData result = this.getSteamDataFromSteamTwice(steam64);
steamDataCache.put(steam64, result); steamDataCache.put(steam64, result);
return result; return result;
} catch (Exception e) { } catch (Exception e) {
@ -53,6 +53,23 @@ public class SteamWebApi {
} }
} }
private SteamData getSteamDataFromSteamTwice(long steam64) throws Exception {
int kd = 3;
SteamData steamData = null;
while (kd != 0 && steamData == null) {
try {
steamData = getSteamDataFromSteam(steam64);
if (steamData == null)
kd--;
else
return steamData;
} catch (Exception e) {
kd--;
}
}
throw new Exception("cannot fetch steamdata with id:" + steam64);
}
private SteamData getSteamDataFromSteam(long steam64) throws Exception { private SteamData getSteamDataFromSteam(long steam64) throws Exception {
String url = String.format("https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%s", webapi_key, steam64); String url = String.format("https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%s", webapi_key, steam64);
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class); ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

Loading…
Cancel
Save