From bf8b1af9648a9b05021b4b1fafccdf3dad6c06a1 Mon Sep 17 00:00:00 2001
From: MaxJa4 <74194322+MaxJa4@users.noreply.github.com>
Date: Sat, 27 Jan 2024 21:48:21 +0100
Subject: [PATCH] Add timeout retry (once). Fix add-player modal issue.
---
controllers/tracker_controller.go | 17 ++++++++++++++---
templates/modals/add_player.html | 4 ++--
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/controllers/tracker_controller.go b/controllers/tracker_controller.go
index a9245b9..2b5d47d 100644
--- a/controllers/tracker_controller.go
+++ b/controllers/tracker_controller.go
@@ -4,10 +4,12 @@ import (
"InfantrySkillCalculator/models"
"InfantrySkillCalculator/utils"
"encoding/json"
+ "errors"
"fmt"
"github.com/gin-gonic/gin"
"io"
"math"
+ "net"
"net/http"
"sort"
)
@@ -23,7 +25,7 @@ func GetScoreByPlayerID(c *gin.Context) {
}
score, err := models.PlayerCache.GetScore(player.ID)
- var statusCode int = http.StatusOK
+ var statusCode = http.StatusOK
if err != nil || score == -1 {
score, statusCode = GetPlayerScoreNew(player.Name)
if score == score && score != -1 { // not NaN
@@ -39,7 +41,7 @@ func GetScoreByPlayerID(c *gin.Context) {
c.String(200, fmt.Sprintf("%.2f", score))
case 404:
c.String(200, "")
- case 503, 504:
+ case 503, 504, 408:
c.String(statusCode, "")
default:
c.String(statusCode, "")
@@ -57,7 +59,7 @@ func GetScoreByPlayerName(c *gin.Context) {
c.String(200, fmt.Sprintf("%.2f", score))
case 404:
c.String(200, "Spieler nicht gefunden!")
- case 503, 504:
+ case 503, 504, 408:
c.String(statusCode, "Tracker nicht erreichbar!")
default:
c.String(statusCode, "Ungültige Abfrage!")
@@ -75,6 +77,9 @@ func GetPlayerScore(playerName string) (float32, int) {
func GetPlayerScoreNew(playerName string) (float32, int) {
playerData, statusCode := getPlayerData(playerName)
+ if statusCode == 408 { // retry once
+ playerData, statusCode = getPlayerData(playerName)
+ }
if statusCode != 200 {
return -1, statusCode
}
@@ -95,6 +100,12 @@ func getPlayerData(playerName string) (*models.TrackerDataJSON, int) {
res, err := c.Do(req)
if err != nil {
+ var e net.Error
+ if errors.As(err, &e) && e.Timeout() {
+ utils.Logger.Errorf("[SCORE] Request timeout!")
+ return nil, 408
+ }
+
utils.Logger.Errorf("[SCORE] Failed to send request: %s", err.Error())
return nil, 0
}
diff --git a/templates/modals/add_player.html b/templates/modals/add_player.html
index 6afc3e5..c65347b 100644
--- a/templates/modals/add_player.html
+++ b/templates/modals/add_player.html
@@ -35,8 +35,8 @@
let selectedClan = null;
const submitButton = addPlayerModal.querySelector('button[name="submit"]');
- const playerName = addPlayerModal.querySelector('#addPlayerClanName');
- const clanName = addPlayerModal.querySelector('#playerClanName');
+ const playerName = addPlayerModal.querySelector('#addPlayerName');
+ const clanName = addPlayerModal.querySelector('#addPlayerClanName');
const errorDiv = addPlayerModal.querySelector('.error-message');
const homeClanList = document.getElementById('home-clan');
const oppClanList = document.getElementById('opponent-clan');