Spaces:
Runtime error
Runtime error
package gowebdav | |
import ( | |
"fmt" | |
"os" | |
) | |
// StatusError implements error and wraps | |
// an erroneous status code. | |
type StatusError struct { | |
Status int | |
} | |
func (se StatusError) Error() string { | |
return fmt.Sprintf("%d", se.Status) | |
} | |
// IsErrCode returns true if the given error | |
// is an os.PathError wrapping a StatusError | |
// with the given status code. | |
func IsErrCode(err error, code int) bool { | |
if pe, ok := err.(*os.PathError); ok { | |
se, ok := pe.Err.(StatusError) | |
return ok && se.Status == code | |
} | |
return false | |
} | |
// IsErrNotFound is shorthand for IsErrCode | |
// for status 404. | |
func IsErrNotFound(err error) bool { | |
return IsErrCode(err, 404) | |
} | |
func newPathError(op string, path string, statusCode int) error { | |
return &os.PathError{ | |
Op: op, | |
Path: path, | |
Err: StatusError{statusCode}, | |
} | |
} | |
func newPathErrorErr(op string, path string, err error) error { | |
return &os.PathError{ | |
Op: op, | |
Path: path, | |
Err: err, | |
} | |
} | |