@@ -896,7 +896,8 @@ func (c *Client) bareDo(ctx context.Context, caller *http.Client, req *http.Requ
896
896
}
897
897
898
898
// If the error type is *url.Error, sanitize its URL before returning.
899
- if e , ok := err .(* url.Error ); ok {
899
+ var e * url.Error
900
+ if errors .As (err , & e ) {
900
901
if url , err := url .Parse (e .URL ); err == nil {
901
902
e .URL = sanitizeURL (url ).String ()
902
903
return response , e
@@ -923,8 +924,8 @@ func (c *Client) bareDo(ctx context.Context, caller *http.Client, req *http.Requ
923
924
// added to the AcceptedError and returned.
924
925
//
925
926
// Issue #1022
926
- aerr , ok := err .( * AcceptedError )
927
- if ok {
927
+ var aerr * AcceptedError
928
+ if errors . As ( err , & aerr ) {
928
929
b , readErr := io .ReadAll (resp .Body )
929
930
if readErr != nil {
930
931
return response , readErr
@@ -934,8 +935,9 @@ func (c *Client) bareDo(ctx context.Context, caller *http.Client, req *http.Requ
934
935
err = aerr
935
936
}
936
937
937
- rateLimitError , ok := err .(* RateLimitError )
938
- if ok && req .Context ().Value (SleepUntilPrimaryRateLimitResetWhenRateLimited ) != nil {
938
+ var rateLimitError * RateLimitError
939
+ if errors .As (err , & rateLimitError ) &&
940
+ req .Context ().Value (SleepUntilPrimaryRateLimitResetWhenRateLimited ) != nil {
939
941
if err := sleepUntilResetWithBuffer (req .Context (), rateLimitError .Rate .Reset .Time ); err != nil {
940
942
return response , err
941
943
}
@@ -944,8 +946,8 @@ func (c *Client) bareDo(ctx context.Context, caller *http.Client, req *http.Requ
944
946
}
945
947
946
948
// Update the secondary rate limit if we hit it.
947
- rerr , ok := err .( * AbuseRateLimitError )
948
- if ok && rerr .RetryAfter != nil {
949
+ var rerr * AbuseRateLimitError
950
+ if errors . As ( err , & rerr ) && rerr .RetryAfter != nil {
949
951
// if a max duration is specified, make sure that we are waiting at most this duration
950
952
if c .MaxSecondaryRateLimitRetryAfterDuration > 0 && rerr .GetRetryAfter () > c .MaxSecondaryRateLimitRetryAfterDuration {
951
953
rerr .RetryAfter = & c .MaxSecondaryRateLimitRetryAfterDuration
@@ -992,8 +994,8 @@ var errInvalidLocation = errors.New("invalid or empty Location header in redirec
992
994
func (c * Client ) bareDoUntilFound (ctx context.Context , req * http.Request , maxRedirects int ) (* url.URL , * Response , error ) {
993
995
response , err := c .bareDoIgnoreRedirects (ctx , req )
994
996
if err != nil {
995
- rerr , ok := err .( * RedirectionError )
996
- if ok {
997
+ var rerr * RedirectionError
998
+ if errors . As ( err , & rerr ) {
997
999
// If we receive a 302, transform potential relative locations into absolute and return it.
998
1000
if rerr .StatusCode == http .StatusFound {
999
1001
if rerr .Location == nil {
@@ -1181,8 +1183,8 @@ func (r *ErrorResponse) Error() string {
1181
1183
1182
1184
// Is returns whether the provided error equals this error.
1183
1185
func (r * ErrorResponse ) Is (target error ) bool {
1184
- v , ok := target .( * ErrorResponse )
1185
- if ! ok {
1186
+ var v * ErrorResponse
1187
+ if ! errors . As ( target , & v ) {
1186
1188
return false
1187
1189
}
1188
1190
@@ -1246,8 +1248,8 @@ func (r *RateLimitError) Error() string {
1246
1248
1247
1249
// Is returns whether the provided error equals this error.
1248
1250
func (r * RateLimitError ) Is (target error ) bool {
1249
- v , ok := target .( * RateLimitError )
1250
- if ! ok {
1251
+ var v * RateLimitError
1252
+ if ! errors . As ( target , & v ) {
1251
1253
return false
1252
1254
}
1253
1255
@@ -1273,8 +1275,8 @@ func (*AcceptedError) Error() string {
1273
1275
1274
1276
// Is returns whether the provided error equals this error.
1275
1277
func (ae * AcceptedError ) Is (target error ) bool {
1276
- v , ok := target .( * AcceptedError )
1277
- if ! ok {
1278
+ var v * AcceptedError
1279
+ if ! errors . As ( target , & v ) {
1278
1280
return false
1279
1281
}
1280
1282
return bytes .Equal (ae .Raw , v .Raw )
@@ -1300,8 +1302,8 @@ func (r *AbuseRateLimitError) Error() string {
1300
1302
1301
1303
// Is returns whether the provided error equals this error.
1302
1304
func (r * AbuseRateLimitError ) Is (target error ) bool {
1303
- v , ok := target .( * AbuseRateLimitError )
1304
- if ! ok {
1305
+ var v * AbuseRateLimitError
1306
+ if ! errors . As ( target , & v ) {
1305
1307
return false
1306
1308
}
1307
1309
@@ -1334,8 +1336,8 @@ func (r *RedirectionError) Error() string {
1334
1336
1335
1337
// Is returns whether the provided error equals this error.
1336
1338
func (r * RedirectionError ) Is (target error ) bool {
1337
- v , ok := target .( * RedirectionError )
1338
- if ! ok {
1339
+ var v * RedirectionError
1340
+ if ! errors . As ( target , & v ) {
1339
1341
return false
1340
1342
}
1341
1343
@@ -1486,7 +1488,8 @@ func parseBoolResponse(err error) (bool, error) {
1486
1488
return true , nil
1487
1489
}
1488
1490
1489
- if err , ok := err .(* ErrorResponse ); ok && err .Response .StatusCode == http .StatusNotFound {
1491
+ var rerr * ErrorResponse
1492
+ if errors .As (err , & rerr ) && rerr .Response .StatusCode == http .StatusNotFound {
1490
1493
// Simply false. In this one case, we do not pass the error through.
1491
1494
return false , nil
1492
1495
}
0 commit comments