1package errdefs // import "github.com/docker/docker/errdefs" 2 3type causer interface { 4 Cause() error 5} 6 7func getImplementer(err error) error { 8 switch e := err.(type) { 9 case 10 ErrNotFound, 11 ErrInvalidParameter, 12 ErrConflict, 13 ErrUnauthorized, 14 ErrUnavailable, 15 ErrForbidden, 16 ErrSystem, 17 ErrNotModified, 18 ErrAlreadyExists, 19 ErrNotImplemented, 20 ErrCancelled, 21 ErrDeadline, 22 ErrDataLoss, 23 ErrUnknown: 24 return err 25 case causer: 26 return getImplementer(e.Cause()) 27 default: 28 return err 29 } 30} 31 32// IsNotFound returns if the passed in error is an ErrNotFound 33func IsNotFound(err error) bool { 34 _, ok := getImplementer(err).(ErrNotFound) 35 return ok 36} 37 38// IsInvalidParameter returns if the passed in error is an ErrInvalidParameter 39func IsInvalidParameter(err error) bool { 40 _, ok := getImplementer(err).(ErrInvalidParameter) 41 return ok 42} 43 44// IsConflict returns if the passed in error is an ErrConflict 45func IsConflict(err error) bool { 46 _, ok := getImplementer(err).(ErrConflict) 47 return ok 48} 49 50// IsUnauthorized returns if the passed in error is an ErrUnauthorized 51func IsUnauthorized(err error) bool { 52 _, ok := getImplementer(err).(ErrUnauthorized) 53 return ok 54} 55 56// IsUnavailable returns if the passed in error is an ErrUnavailable 57func IsUnavailable(err error) bool { 58 _, ok := getImplementer(err).(ErrUnavailable) 59 return ok 60} 61 62// IsForbidden returns if the passed in error is an ErrForbidden 63func IsForbidden(err error) bool { 64 _, ok := getImplementer(err).(ErrForbidden) 65 return ok 66} 67 68// IsSystem returns if the passed in error is an ErrSystem 69func IsSystem(err error) bool { 70 _, ok := getImplementer(err).(ErrSystem) 71 return ok 72} 73 74// IsNotModified returns if the passed in error is a NotModified error 75func IsNotModified(err error) bool { 76 _, ok := getImplementer(err).(ErrNotModified) 77 return ok 78} 79 80// IsAlreadyExists returns if the passed in error is a AlreadyExists error 81func IsAlreadyExists(err error) bool { 82 _, ok := getImplementer(err).(ErrAlreadyExists) 83 return ok 84} 85 86// IsNotImplemented returns if the passed in error is an ErrNotImplemented 87func IsNotImplemented(err error) bool { 88 _, ok := getImplementer(err).(ErrNotImplemented) 89 return ok 90} 91 92// IsUnknown returns if the passed in error is an ErrUnknown 93func IsUnknown(err error) bool { 94 _, ok := getImplementer(err).(ErrUnknown) 95 return ok 96} 97 98// IsCancelled returns if the passed in error is an ErrCancelled 99func IsCancelled(err error) bool { 100 _, ok := getImplementer(err).(ErrCancelled) 101 return ok 102} 103 104// IsDeadline returns if the passed in error is an ErrDeadline 105func IsDeadline(err error) bool { 106 _, ok := getImplementer(err).(ErrDeadline) 107 return ok 108} 109 110// IsDataLoss returns if the passed in error is an ErrDataLoss 111func IsDataLoss(err error) bool { 112 _, ok := getImplementer(err).(ErrDataLoss) 113 return ok 114} 115