From db04ae0b644271674c7897c41913200b68db5876 Mon Sep 17 00:00:00 2001 From: gsd Date: Tue, 24 Jun 2025 00:24:39 +0300 Subject: [PATCH] steamdata fetch fix --- src/main/java/app/services/db/BanService.java | 4 ++-- .../java/app/services/steam/SteamWebApi.java | 21 +++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/app/services/db/BanService.java b/src/main/java/app/services/db/BanService.java index 683fed5..6fbf478 100644 --- a/src/main/java/app/services/db/BanService.java +++ b/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 (?,?,?,?,?,?,?,?,?)", 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().getName() : user.getSteam_data().getNickname(), - admin.getSteam_data().getNickname()); + user.getPlay_on() != null ? user.getPlay_on().getName() : user.getSteam_data() == null ? "player" : user.getSteam_data().getNickname(), + admin.getSteam_data() == null ? "admin" :admin.getSteam_data().getNickname()); serverService.kickPlayer(user, "banned"); return getBan(user.getSteamids()).getId(); } diff --git a/src/main/java/app/services/steam/SteamWebApi.java b/src/main/java/app/services/steam/SteamWebApi.java index ce3a173..0b4d4bb 100644 --- a/src/main/java/app/services/steam/SteamWebApi.java +++ b/src/main/java/app/services/steam/SteamWebApi.java @@ -36,7 +36,7 @@ public class SteamWebApi { //todo mb store in db private final HashMap steamDataCache = new HashMap<>(); private final HashMap 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 public SteamData getSteamData(long steam64) { @@ -44,7 +44,7 @@ public class SteamWebApi { return steamDataCache.get(steam64); } else { try { - SteamData result = this.getSteamDataFromSteam(steam64); + SteamData result = this.getSteamDataFromSteamTwice(steam64); steamDataCache.put(steam64, result); return result; } 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 { String url = String.format("https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%s", webapi_key, steam64); ResponseEntity response = restTemplate.getForEntity(url, String.class);