Spaces:
Paused
Paused
| 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, | |
| } | |
| } | |