some more code cleanup
This commit is contained in:
110
utils/utils.go
110
utils/utils.go
@@ -32,10 +32,10 @@ type Conf struct {
|
||||
Logging struct {
|
||||
Level string
|
||||
}
|
||||
Db struct {
|
||||
DB struct {
|
||||
Driver string
|
||||
ConnectTo string `yaml:"connect_to"`
|
||||
}
|
||||
} `yaml:"db"`
|
||||
Parser struct {
|
||||
Worker int
|
||||
}
|
||||
@@ -200,7 +200,7 @@ type MetaStatsResponse struct {
|
||||
}
|
||||
|
||||
type MatchResponse struct {
|
||||
MatchId uint64 `json:"match_id,string"`
|
||||
MatchID uint64 `json:"match_id,string"`
|
||||
ShareCode string `json:"share_code,omitempty"`
|
||||
Map string `json:"map"`
|
||||
Date int64 `json:"date"`
|
||||
@@ -218,10 +218,10 @@ type MatchResponse struct {
|
||||
}
|
||||
|
||||
var (
|
||||
SharecodeNoMatchError = errors.New("sharecode not provided")
|
||||
AuthcodeRateLimitError = errors.New("temporary rate-limited/unavailable")
|
||||
AuthcodeUnauthorizedError = errors.New("authcode unauthorized")
|
||||
NoMatchError = errors.New("no match found")
|
||||
ErrorSharecodeNoMatch = errors.New("sharecode not provided")
|
||||
ErrorAuthcodeRateLimit = errors.New("temporary rate-limited/unavailable")
|
||||
ErrorAuthcodeUnauthorized = errors.New("authcode unauthorized")
|
||||
ErrorNoMatch = errors.New("no match found")
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -233,9 +233,10 @@ const (
|
||||
|
||||
//goland:noinspection SpellCheckingInspection
|
||||
var (
|
||||
SteamId64RegEx = regexp.MustCompile(`^\d{17}$`)
|
||||
SteamID64RegEx = regexp.MustCompile(`^\d{17}$`)
|
||||
ShareCodeRegEx = regexp.MustCompile(`^CSGO(?:-?[ABCDEFGHJKLMNOPQRSTUVWXYZabcdefhijkmnopqrstuvwxyz23456789]{5}){5}$`)
|
||||
AuthCodeRegEx = regexp.MustCompile(`^[ABCDEFGHJKLMNOPQRSTUVWXYZ23456789]{4}-[ABCDEFGHJKLMNOPQRSTUVWXYZ23456789]{5}-[ABCDEFGHJKLMNOPQRSTUVWXYZ23456789]{4}$`)
|
||||
AuthCodeRegEx = regexp.MustCompile(
|
||||
`^[ABCDEFGHJKLMNOPQRSTUVWXYZ23456789]{4}-[ABCDEFGHJKLMNOPQRSTUVWXYZ23456789]{5}-[ABCDEFGHJKLMNOPQRSTUVWXYZ23456789]{4}$`)
|
||||
)
|
||||
|
||||
func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
@@ -388,13 +389,13 @@ func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
return mResponse.WeaponDmg[i].Dmg > mResponse.WeaponDmg[j].Dmg
|
||||
})
|
||||
|
||||
if len(mResponse.BestMates) > 10 {
|
||||
if len(mResponse.BestMates) > 10 { //nolint:gomnd
|
||||
mResponse.BestMates = mResponse.BestMates[:10]
|
||||
}
|
||||
if len(mResponse.MostMates) > 10 {
|
||||
if len(mResponse.MostMates) > 10 { //nolint:gomnd
|
||||
mResponse.MostMates = mResponse.MostMates[:10]
|
||||
}
|
||||
if len(mResponse.WeaponDmg) > 10 {
|
||||
if len(mResponse.WeaponDmg) > 10 { //nolint:gomnd
|
||||
mResponse.WeaponDmg = mResponse.WeaponDmg[:10]
|
||||
}
|
||||
|
||||
@@ -431,7 +432,8 @@ func DeleteMatch(matchDel *ent.Match, db *ent.Client) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetWinLossTieForPlayer(dbPlayer *ent.Player) (wins int, looses int, ties int, err error) {
|
||||
//nolint:nakedret
|
||||
func GetWinLossTieForPlayer(dbPlayer *ent.Player) (wins, looses, ties int, err error) {
|
||||
var res []struct {
|
||||
MatchResult int `json:"match_result"`
|
||||
Count int `json:"count"`
|
||||
@@ -474,22 +476,22 @@ func GetWinLossTieForPlayer(dbPlayer *ent.Player) (wins int, looses int, ties in
|
||||
return
|
||||
}
|
||||
|
||||
func IsAuthCodeValid(player *ent.Player, apiKey string, shareCode string, authCode string, rl *rate.Limiter) (bool, error) {
|
||||
func IsAuthCodeValid(tPlayer *ent.Player, apiKey, shareCode, authCode string, rl *rate.Limiter) (bool, error) {
|
||||
var tMatch *ent.Match
|
||||
var err error
|
||||
if shareCode == "" {
|
||||
tMatch, err = player.QueryMatches().Order(ent.Asc(match.FieldDate)).First(context.Background())
|
||||
tMatch, err = tPlayer.QueryMatches().Order(ent.Asc(match.FieldDate)).First(context.Background())
|
||||
if err != nil {
|
||||
return false, SharecodeNoMatchError
|
||||
return false, ErrorSharecodeNoMatch
|
||||
}
|
||||
|
||||
_, err := getNextShareCode(tMatch.ShareCode, apiKey, authCode, player.ID, rl)
|
||||
_, err := getNextShareCode(tMatch.ShareCode, apiKey, authCode, tPlayer.ID, rl)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
} else {
|
||||
_, err := getNextShareCode(shareCode, apiKey, authCode, player.ID, rl)
|
||||
_, err := getNextShareCode(shareCode, apiKey, authCode, tPlayer.ID, rl)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
@@ -497,28 +499,28 @@ func IsAuthCodeValid(player *ent.Player, apiKey string, shareCode string, authCo
|
||||
}
|
||||
}
|
||||
|
||||
func GetNewShareCodesForPlayer(player *ent.Player, apiKey string, rl *rate.Limiter) ([]string, error) {
|
||||
latestMatch, err := player.QueryMatches().Order(ent.Desc(match.FieldDate)).First(context.Background())
|
||||
func GetNewShareCodesForPlayer(tPlayer *ent.Player, apiKey string, rl *rate.Limiter) ([]string, error) {
|
||||
latestMatch, err := tPlayer.QueryMatches().Order(ent.Desc(match.FieldDate)).First(context.Background())
|
||||
if err != nil {
|
||||
if ent.IsNotFound(err) {
|
||||
return nil, NoMatchError
|
||||
return nil, ErrorNoMatch
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
oldestMatch, err := player.QueryMatches().Order(ent.Asc(match.FieldDate)).First(context.Background())
|
||||
oldestMatch, err := tPlayer.QueryMatches().Order(ent.Asc(match.FieldDate)).First(context.Background())
|
||||
if err != nil {
|
||||
if ent.IsNotFound(err) {
|
||||
return nil, NoMatchError
|
||||
return nil, ErrorNoMatch
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var newShareCode string
|
||||
if oldestMatch.ShareCode == player.OldestSharecodeSeen {
|
||||
newShareCode, err = getNextShareCode(latestMatch.ShareCode, apiKey, player.AuthCode, player.ID, rl)
|
||||
if oldestMatch.ShareCode == tPlayer.OldestSharecodeSeen {
|
||||
newShareCode, err = getNextShareCode(latestMatch.ShareCode, apiKey, tPlayer.AuthCode, tPlayer.ID, rl)
|
||||
} else {
|
||||
newShareCode, err = getNextShareCode(oldestMatch.ShareCode, apiKey, player.AuthCode, player.ID, rl)
|
||||
newShareCode, err = getNextShareCode(oldestMatch.ShareCode, apiKey, tPlayer.AuthCode, tPlayer.ID, rl)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -527,13 +529,13 @@ func GetNewShareCodesForPlayer(player *ent.Player, apiKey string, rl *rate.Limit
|
||||
var rCodes []string
|
||||
for newShareCode != "n/a" {
|
||||
rCodes = append(rCodes, newShareCode)
|
||||
newShareCode, err = getNextShareCode(rCodes[len(rCodes)-1], apiKey, player.AuthCode, player.ID, rl)
|
||||
newShareCode, err = getNextShareCode(rCodes[len(rCodes)-1], apiKey, tPlayer.AuthCode, tPlayer.ID, rl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
err = player.Update().SetSharecodeUpdated(time.Now().UTC()).SetOldestSharecodeSeen(oldestMatch.ShareCode).Exec(context.Background())
|
||||
err = tPlayer.Update().SetSharecodeUpdated(time.Now().UTC()).SetOldestSharecodeSeen(oldestMatch.ShareCode).Exec(context.Background())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -541,8 +543,8 @@ func GetNewShareCodesForPlayer(player *ent.Player, apiKey string, rl *rate.Limit
|
||||
return rCodes, nil
|
||||
}
|
||||
|
||||
func getNextShareCode(lastCode string, apiKey string, authCode string, steamId uint64, rl *rate.Limiter) (string, error) {
|
||||
if lastCode == "" || apiKey == "" || authCode == "" || steamId == 0 {
|
||||
func getNextShareCode(lastCode, apiKey, authCode string, steamID uint64, rl *rate.Limiter) (string, error) {
|
||||
if lastCode == "" || apiKey == "" || authCode == "" || steamID == 0 {
|
||||
return "", fmt.Errorf("invalid arguments")
|
||||
}
|
||||
|
||||
@@ -552,8 +554,8 @@ func getNextShareCode(lastCode string, apiKey string, authCode string, steamId u
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
log.Debugf("[SC] STEAMPI with %s", fmt.Sprintf(shareCodeURLEntry, "REDACTED", steamId, "REDACTED", lastCode))
|
||||
r, err := http.Get(fmt.Sprintf(shareCodeURLEntry, apiKey, steamId, authCode, lastCode))
|
||||
log.Debugf("[SC] STEAMPI with %s", fmt.Sprintf(shareCodeURLEntry, "REDACTED", steamID, "REDACTED", lastCode))
|
||||
r, err := http.Get(fmt.Sprintf(shareCodeURLEntry, apiKey, steamID, authCode, lastCode)) //nolint:noctx
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -562,34 +564,32 @@ func getNextShareCode(lastCode string, apiKey string, authCode string, steamId u
|
||||
case http.StatusAccepted:
|
||||
return "n/a", nil
|
||||
case http.StatusTooManyRequests:
|
||||
return "", AuthcodeRateLimitError
|
||||
return "", ErrorAuthcodeRateLimit
|
||||
case http.StatusServiceUnavailable:
|
||||
return "", AuthcodeRateLimitError
|
||||
return "", ErrorAuthcodeRateLimit
|
||||
case http.StatusPreconditionFailed:
|
||||
return "", SharecodeNoMatchError
|
||||
return "", ErrorSharecodeNoMatch
|
||||
case http.StatusForbidden:
|
||||
return "", AuthcodeUnauthorizedError
|
||||
return "", ErrorAuthcodeUnauthorized
|
||||
case http.StatusOK:
|
||||
break
|
||||
default:
|
||||
return "", errors.New("temporary steamapi error")
|
||||
}
|
||||
|
||||
defer func(Body io.ReadCloser) {
|
||||
_ = Body.Close()
|
||||
}(r.Body)
|
||||
bJson, err := io.ReadAll(r.Body)
|
||||
bJSON, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
_ = r.Body.Close()
|
||||
|
||||
rJSON := new(ShareCodeResponse)
|
||||
err = json.Unmarshal(bJSON, rJSON)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
rJson := new(ShareCodeResponse)
|
||||
err = json.Unmarshal(bJson, rJson)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return rJson.Result.Code, nil
|
||||
return rJSON.Result.Code, nil
|
||||
}
|
||||
|
||||
func Player(db *ent.Client, id interface{}, apiKey string, rl *rate.Limiter) (*ent.Player, error) {
|
||||
@@ -597,7 +597,7 @@ func Player(db *ent.Client, id interface{}, apiKey string, rl *rate.Limiter) (*e
|
||||
case uint64:
|
||||
return PlayerFromSteamID64(db, e, apiKey, rl)
|
||||
case string:
|
||||
if SteamId64RegEx.MatchString(e) {
|
||||
if SteamID64RegEx.MatchString(e) {
|
||||
steamID64, err := strconv.ParseUint(e, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -612,7 +612,7 @@ func Player(db *ent.Client, id interface{}, apiKey string, rl *rate.Limiter) (*e
|
||||
}
|
||||
}
|
||||
|
||||
func PlayerFromVanityURL(db *ent.Client, id string, apiKey string, rl *rate.Limiter) (*ent.Player, error) {
|
||||
func PlayerFromVanityURL(db *ent.Client, id, apiKey string, rl *rate.Limiter) (*ent.Player, error) {
|
||||
if id == "" {
|
||||
return nil, fmt.Errorf("invalid arguments")
|
||||
}
|
||||
@@ -681,7 +681,7 @@ func PlayerFromSteamID64(db *ent.Client, steamID uint64, apiKey string, rl *rate
|
||||
}
|
||||
}
|
||||
|
||||
func TranslateWithDeepL(text string, language string, baseURL string, apiKey string, timeout int) (translated string, detectedLanguage string, err error) {
|
||||
func TranslateWithDeepL(text, language, baseURL, apiKey string, timeout int) (translated, detectedLanguage string, err error) {
|
||||
c := &http.Client{
|
||||
Timeout: time.Duration(timeout) * time.Second,
|
||||
}
|
||||
@@ -689,7 +689,7 @@ func TranslateWithDeepL(text string, language string, baseURL string, apiKey str
|
||||
v.Set("auth_key", apiKey)
|
||||
v.Set("text", text)
|
||||
v.Set("target_lang", language)
|
||||
dlResp, err := c.PostForm("https://"+baseURL+"/v2/translate", v)
|
||||
dlResp, err := c.PostForm("https://"+baseURL+"/v2/translate", v) //nolint:noctx
|
||||
switch {
|
||||
case err != nil:
|
||||
return "", "", fmt.Errorf("deepl response: %w", err)
|
||||
@@ -697,12 +697,10 @@ func TranslateWithDeepL(text string, language string, baseURL string, apiKey str
|
||||
return "", "", fmt.Errorf("deepl response %d", dlResp.StatusCode)
|
||||
default:
|
||||
respBytes, err := io.ReadAll(dlResp.Body)
|
||||
defer func(Body io.ReadCloser) {
|
||||
_ = Body.Close()
|
||||
}(dlResp.Body)
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("error reading deepl response: %w", err)
|
||||
}
|
||||
_ = dlResp.Body.Close()
|
||||
dlRespJSON := new(DeepLResponse)
|
||||
err = json.Unmarshal(respBytes, &dlRespJSON)
|
||||
if err != nil {
|
||||
@@ -719,7 +717,7 @@ func PlayerFromSteam(players []*ent.Player, db *ent.Client, apiKey string, rl *r
|
||||
idsToUpdate = append(idsToUpdate, updatePlayer.ID)
|
||||
}
|
||||
|
||||
batches := int(math.Round((float64(len(players)) / 1000) + 0.5))
|
||||
batches := int(math.Round((float64(len(players)) / 1000) + 0.5)) //nolint:gomnd
|
||||
|
||||
if rl != nil {
|
||||
err := rl.WaitN(context.Background(), batches)
|
||||
@@ -736,7 +734,7 @@ func PlayerFromSteam(players []*ent.Player, db *ent.Client, apiKey string, rl *r
|
||||
var nPlayers []*ent.Player
|
||||
for _, pS := range playerSum {
|
||||
// check for vanityURL
|
||||
if SteamId64RegEx.MatchString(path.Base(pS.ProfileURL)) {
|
||||
if SteamID64RegEx.MatchString(path.Base(pS.ProfileURL)) {
|
||||
pS.ProfileURL = ""
|
||||
} else {
|
||||
pS.ProfileURL = path.Base(pS.ProfileURL)
|
||||
|
Reference in New Issue
Block a user