Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e324f034b5 |
+2
-21
@@ -5,6 +5,7 @@ package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
@@ -52,32 +53,12 @@ func asAPIError(err error) (*APIError, bool) {
|
||||
return nil, false
|
||||
}
|
||||
var target *APIError
|
||||
if ok := errorAs(err, &target); ok {
|
||||
if errors.As(err, &target) {
|
||||
return target, true
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
|
||||
// errorAs is a type-safe wrapper for errors.As to avoid import cycle issues.
|
||||
func errorAs(err error, target interface{}) bool {
|
||||
switch t := target.(type) {
|
||||
case **APIError:
|
||||
for err != nil {
|
||||
if e, ok := err.(*APIError); ok {
|
||||
*t = e
|
||||
return true
|
||||
}
|
||||
// Try unwrapping
|
||||
if u, ok := err.(interface{ Unwrap() error }); ok {
|
||||
err = u.Unwrap()
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Client interacts with the GitHub API.
|
||||
// A Client is safe for concurrent use by multiple goroutines.
|
||||
type Client struct {
|
||||
|
||||
Reference in New Issue
Block a user