mirror of https://github.com/Xhofe/alist
				
				
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			940 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			940 B
		
	
	
	
		
			Go
		
	
	
| 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,
 | |
| 	}
 | |
| }
 |