package app.entities.db; import jakarta.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; import lombok.Data; import java.sql.Timestamp; import java.time.Instant; import java.util.Arrays; @Data public class CollectableStatistic { Long id; Timestamp timestamp; /// String client_ip; String steam64; /// String method; String path; String query; /// String useragent; public CollectableStatistic(HttpServletRequest request) { this.client_ip = request.getHeader("X-Forwarded-For"); if (this.client_ip != null) this.client_ip = this.client_ip.split(",")[0]; this.method = request.getMethod(); this.path = request.getRequestURI(); this.query = request.getQueryString(); this.steam64 = getCookie(request, "steam64"); this.useragent = request.getHeader("User-Agent"); this.timestamp = Timestamp.from(Instant.now()); } @Override public String toString() { return "Time: " + timestamp.toString() + "\n" + "IP: " + client_ip + "\n" + "Steam64: " + steam64 + "\n" + "Method: " + method + "\n" + "Path: " + path + "\n" + "Query: " + query + "\n" + "UA: " + useragent + "\n"; } private String getCookie(HttpServletRequest request, String cookie_name) { if (request.getHeader("Cookie") == null) return null; String[] rawCookieParams = request.getHeader("Cookie").split(";"); return Arrays.stream(rawCookieParams).filter(s -> s.contains(cookie_name + "=")).map(s -> s.split(cookie_name + "=")[1]).findFirst().orElse(null); } }