package registry import ( "net/url" "github.com/docker/distribution/registry/api/errcode" ) type notFoundError string func (e notFoundError) Error() string { return string(e) } func (notFoundError) NotFound() {} type validationError struct { cause error } func (e validationError) Error() string { return e.cause.Error() } func (e validationError) InvalidParameter() {} func (e validationError) Cause() error { return e.cause } type unauthorizedError struct { cause error } func (e unauthorizedError) Error() string { return e.cause.Error() } func (e unauthorizedError) Unauthorized() {} func (e unauthorizedError) Cause() error { return e.cause } type systemError struct { cause error } func (e systemError) Error() string { return e.cause.Error() } func (e systemError) SystemError() {} func (e systemError) Cause() error { return e.cause } type notActivatedError struct { cause error } func (e notActivatedError) Error() string { return e.cause.Error() } func (e notActivatedError) Forbidden() {} func (e notActivatedError) Cause() error { return e.cause } func translateV2AuthError(err error) error { switch e := err.(type) { case *url.Error: switch e2 := e.Err.(type) { case errcode.Error: switch e2.Code { case errcode.ErrorCodeUnauthorized: return unauthorizedError{err} } } } return err }