switched to go-retry for steam login; moved match reparsing higher in housekeeping

This commit is contained in:
2022-08-26 17:15:59 +02:00
parent 25965cdde7
commit 64cba30917
5 changed files with 97 additions and 104 deletions

110
main.go
View File

@@ -113,61 +113,6 @@ func housekeeping() {
}
}
// getting new sharecodes
if !demoLoader.GCReady {
log.Warningf("[HK] GC not ready, skipping sharecode refresh")
continue
}
dur, err = time.ParseDuration(conf.Csgowtfd.SharecodeUpdate)
if err != nil {
log.Warningf("[HK] Unable to parse config option sharecode_update %s: %v", conf.Csgowtfd.SharecodeUpdate, err)
dur, _ = time.ParseDuration("30m")
}
tPlayerNeedShareCodeUpdate, err := db.Player.Query().Where(
player.And(
player.Or(
player.SharecodeUpdatedLTE(time.Now().UTC().Add(dur*-1)),
player.SharecodeUpdatedIsNil(),
),
player.Not(player.AuthCodeIsNil()),
)).All(context.Background())
if err != nil {
log.Errorf("[HK] Can't query players: %v", err)
continue
}
for _, tPlayer := range tPlayerNeedShareCodeUpdate {
shareCodes, err := utils.GetNewShareCodesForPlayer(tPlayer, conf.Steam.APIKey, rL)
if err != nil {
switch err.(type) {
case utils.AuthcodeUnauthorizedError:
log.Infof("[HK] authCode for player %d is no longer valid", tPlayer.ID)
err = tPlayer.Update().ClearAuthCode().ClearSharecodeUpdated().Exec(context.Background())
if err != nil {
log.Errorf("[HK] Unable to clear authcode for player %d: %v", tPlayer.ID, err)
}
continue
case utils.SharecodeNoMatchError:
log.Warningf("[HK] last shareCode for player %d does not match player", tPlayer.ID)
continue
default:
log.Errorf("[HK] Error while requesting sharecodes for %d: %v", tPlayer.ID, err)
continue
}
}
for _, code := range shareCodes {
err := demoLoader.LoadDemo(&csgo.Demo{
ShareCode: code,
})
if err != nil {
log.Warningf("[HK] Failure to queue match: %v", err)
}
}
}
// try parsing demos not parsed
tMatches, err := db.Match.Query().Where(match.And(match.DateGT(time.Now().UTC().AddDate(0, 0, -1*conf.Csgowtfd.DemosExpire)), match.DemoParsed(false))).All(context.Background())
if err != nil {
@@ -223,6 +168,61 @@ func housekeeping() {
}
}
}
// getting new sharecodes
if !demoLoader.GCReady {
log.Warningf("[HK] GC not ready, skipping sharecode refresh")
continue
}
dur, err = time.ParseDuration(conf.Csgowtfd.SharecodeUpdate)
if err != nil {
log.Warningf("[HK] Unable to parse config option sharecode_update %s: %v", conf.Csgowtfd.SharecodeUpdate, err)
dur, _ = time.ParseDuration("30m")
}
tPlayerNeedShareCodeUpdate, err := db.Player.Query().Where(
player.And(
player.Or(
player.SharecodeUpdatedLTE(time.Now().UTC().Add(dur*-1)),
player.SharecodeUpdatedIsNil(),
),
player.Not(player.AuthCodeIsNil()),
)).All(context.Background())
if err != nil {
log.Errorf("[HK] Can't query players: %v", err)
continue
}
for _, tPlayer := range tPlayerNeedShareCodeUpdate {
shareCodes, err := utils.GetNewShareCodesForPlayer(tPlayer, conf.Steam.APIKey, rL)
if err != nil {
switch err.(type) {
case utils.AuthcodeUnauthorizedError:
log.Infof("[HK] authCode for player %d is no longer valid", tPlayer.ID)
err = tPlayer.Update().ClearAuthCode().ClearSharecodeUpdated().Exec(context.Background())
if err != nil {
log.Errorf("[HK] Unable to clear authcode for player %d: %v", tPlayer.ID, err)
}
continue
case utils.SharecodeNoMatchError:
log.Warningf("[HK] last shareCode for player %d does not match player", tPlayer.ID)
continue
default:
log.Errorf("[HK] Error while requesting sharecodes for %d: %v", tPlayer.ID, err)
continue
}
}
for _, code := range shareCodes {
err := demoLoader.LoadDemo(&csgo.Demo{
ShareCode: code,
})
if err != nil {
log.Warningf("[HK] Failure to queue match: %v", err)
}
}
}
}
}