fix: refresh action cache and classify auth failures
This commit is contained in:
@@ -201,6 +201,10 @@ func (client *Client) request(ctx context.Context, uri string, data any, refresh
|
||||
return nil, fmt.Errorf("read API response: %w", err)
|
||||
}
|
||||
if response.StatusCode < 200 || response.StatusCode >= 300 {
|
||||
if response.StatusCode == http.StatusUnauthorized || response.StatusCode == http.StatusForbidden {
|
||||
loginErr := &LoginError{Code: response.StatusCode, Message: strings.TrimSpace(string(body))}
|
||||
return nil, fmt.Errorf("API HTTP status from %s: %w: %w", uri, ErrReauthenticationRequired, loginErr)
|
||||
}
|
||||
return nil, fmt.Errorf("API HTTP status %d: %s", response.StatusCode, strings.TrimSpace(string(body)))
|
||||
}
|
||||
result, err := decodeAPIResponse(authData.Ssecurity, nonce, body)
|
||||
@@ -234,7 +238,11 @@ func decodeAPIResponse(ssecurity, nonce string, body []byte) (json.RawMessage, e
|
||||
if message == "" {
|
||||
message = "未知错误"
|
||||
}
|
||||
return nil, &APIError{Code: envelope.Code, Message: message}
|
||||
apiErr := &APIError{Code: envelope.Code, Message: message}
|
||||
if envelope.Code == -10020 || envelope.Code == -10030 {
|
||||
return nil, fmt.Errorf("%w: %w", ErrReauthenticationRequired, apiErr)
|
||||
}
|
||||
return nil, apiErr
|
||||
}
|
||||
return envelope.Result, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user