reworked sharecode return
This commit is contained in:
@@ -432,7 +432,6 @@ func DeleteMatch(matchDel *ent.Match, db *ent.Client) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
//nolint:nakedret
|
||||
func GetWinLossTieForPlayer(dbPlayer *ent.Player) (wins, looses, ties int, err error) {
|
||||
var res []struct {
|
||||
MatchResult int `json:"match_result"`
|
||||
@@ -516,7 +515,7 @@ func GetNewShareCodesForPlayer(tPlayer *ent.Player, apiKey string, rl *rate.Limi
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var newShareCode string
|
||||
var newShareCode *string
|
||||
if oldestMatch.ShareCode == tPlayer.OldestSharecodeSeen {
|
||||
newShareCode, err = getNextShareCode(latestMatch.ShareCode, apiKey, tPlayer.AuthCode, tPlayer.ID, rl)
|
||||
} else {
|
||||
@@ -527,8 +526,8 @@ func GetNewShareCodesForPlayer(tPlayer *ent.Player, apiKey string, rl *rate.Limi
|
||||
}
|
||||
|
||||
var rCodes []string
|
||||
for newShareCode != "n/a" {
|
||||
rCodes = append(rCodes, newShareCode)
|
||||
for newShareCode != nil {
|
||||
rCodes = append(rCodes, *newShareCode)
|
||||
newShareCode, err = getNextShareCode(rCodes[len(rCodes)-1], apiKey, tPlayer.AuthCode, tPlayer.ID, rl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -543,53 +542,53 @@ func GetNewShareCodesForPlayer(tPlayer *ent.Player, apiKey string, rl *rate.Limi
|
||||
return rCodes, nil
|
||||
}
|
||||
|
||||
func getNextShareCode(lastCode, apiKey, authCode string, steamID uint64, rl *rate.Limiter) (string, error) {
|
||||
func getNextShareCode(lastCode, apiKey, authCode string, steamID uint64, rl *rate.Limiter) (*string, error) {
|
||||
if lastCode == "" || apiKey == "" || authCode == "" || steamID == 0 {
|
||||
return "", fmt.Errorf("invalid arguments")
|
||||
return nil, fmt.Errorf("invalid arguments")
|
||||
}
|
||||
|
||||
if rl != nil {
|
||||
err := rl.Wait(context.Background())
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, 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)) //nolint:noctx
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch r.StatusCode {
|
||||
case http.StatusAccepted:
|
||||
return "n/a", nil
|
||||
return nil, nil
|
||||
case http.StatusTooManyRequests:
|
||||
return "", ErrorAuthcodeRateLimit
|
||||
return nil, ErrorAuthcodeRateLimit
|
||||
case http.StatusServiceUnavailable:
|
||||
return "", ErrorAuthcodeRateLimit
|
||||
return nil, ErrorAuthcodeRateLimit
|
||||
case http.StatusPreconditionFailed:
|
||||
return "", ErrorSharecodeNoMatch
|
||||
return nil, ErrorSharecodeNoMatch
|
||||
case http.StatusForbidden:
|
||||
return "", ErrorAuthcodeUnauthorized
|
||||
return nil, ErrorAuthcodeUnauthorized
|
||||
case http.StatusOK:
|
||||
break
|
||||
default:
|
||||
return "", errors.New("temporary steamapi error")
|
||||
return nil, fmt.Errorf("temporary steamapi error (HTTP %d)", r.StatusCode)
|
||||
}
|
||||
|
||||
bJSON, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
_ = r.Body.Close()
|
||||
|
||||
rJSON := new(ShareCodeResponse)
|
||||
err = json.Unmarshal(bJSON, rJSON)
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, 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) {
|
||||
|
Reference in New Issue
Block a user