Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e324f034b5 |
+2
-21
@@ -5,6 +5,7 @@ package github
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -52,32 +53,12 @@ func asAPIError(err error) (*APIError, bool) {
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
var target *APIError
|
var target *APIError
|
||||||
if ok := errorAs(err, &target); ok {
|
if errors.As(err, &target) {
|
||||||
return target, true
|
return target, true
|
||||||
}
|
}
|
||||||
return nil, false
|
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.
|
// Client interacts with the GitHub API.
|
||||||
// A Client is safe for concurrent use by multiple goroutines.
|
// A Client is safe for concurrent use by multiple goroutines.
|
||||||
type Client struct {
|
type Client struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user