Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate using errors.New and fmt.Errorf (#1673) #1680

Merged
merged 4 commits into from
May 7, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions changelog/unreleased/fdeprecate-errors-new-fmt-errorf.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Enhancement: Deprecate using errors.New and fmt.Errorf

Previously we were using errors.New and fmt.Errorf to create errors.
Now we use the errors defined in the errtypes package.

https://github.com/cs3org/reva/issues/1673
8 changes: 4 additions & 4 deletions internal/grpc/interceptors/auth/auth.go
Original file line number Diff line number Diff line change
@@ -20,10 +20,10 @@ package auth

import (
"context"
"fmt"

userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
"github.com/cs3org/reva/pkg/appctx"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/token"
tokenmgr "github.com/cs3org/reva/pkg/token/manager/registry"
"github.com/cs3org/reva/pkg/user"
@@ -67,7 +67,7 @@ func NewUnary(m map[string]interface{}, unprotected []string) (grpc.UnaryServerI

h, ok := tokenmgr.NewFuncs[conf.TokenManager]
if !ok {
return nil, errors.New("auth: token manager does not exist: " + conf.TokenManager)
return nil, errtypes.NotFound("auth: token manager does not exist: " + conf.TokenManager)
}

tokenManager, err := h(conf.TokenManagers[conf.TokenManager])
@@ -140,12 +140,12 @@ func NewStream(m map[string]interface{}, unprotected []string) (grpc.StreamServe

h, ok := tokenmgr.NewFuncs[conf.TokenManager]
if !ok {
return nil, fmt.Errorf("auth: token manager not found: %s", conf.TokenManager)
return nil, errtypes.NotFound("auth: token manager not found: " + conf.TokenManager)
}

tokenManager, err := h(conf.TokenManagers[conf.TokenManager])
if err != nil {
return nil, errors.New("auth: token manager not found: " + conf.TokenManager)
return nil, errtypes.NotFound("auth: token manager not found: " + conf.TokenManager)
}

interceptor := func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
7 changes: 4 additions & 3 deletions internal/grpc/services/appprovider/appprovider.go
Original file line number Diff line number Diff line change
@@ -35,6 +35,7 @@ import (
"github.com/cs3org/reva/pkg/app"
"github.com/cs3org/reva/pkg/app/provider/demo"
"github.com/cs3org/reva/pkg/appctx"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/cs3org/reva/pkg/rhttp"
@@ -109,7 +110,7 @@ func getProvider(c *config) (app.Provider, error) {
case "demo":
return demo.New(c.Demo)
default:
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}
}

@@ -131,7 +132,7 @@ func (s *service) getWopiAppEndpoints(ctx context.Context) (map[string]interface
}
defer appsRes.Body.Close()
if appsRes.StatusCode != http.StatusOK {
return nil, fmt.Errorf("Request to WOPI server returned %d", appsRes.StatusCode)
return nil, errtypes.InternalError(fmt.Sprintf("Request to WOPI server returned %d", appsRes.StatusCode))
}
appsBody, err := ioutil.ReadAll(appsRes.Body)
if err != nil {
@@ -263,7 +264,7 @@ func (s *service) OpenFileInAppProvider(ctx context.Context, req *providerpb.Ope
}
defer bridgeRes.Body.Close()
if bridgeRes.StatusCode != http.StatusFound {
return nil, fmt.Errorf("Request to WOPI bridge returned %d", bridgeRes.StatusCode)
return nil, errtypes.InternalError(fmt.Sprintf("Request to WOPI bridge returned %d", bridgeRes.StatusCode))
}
appProviderURL = bridgeRes.Header.Get("Location")
}
4 changes: 2 additions & 2 deletions internal/grpc/services/appregistry/appregistry.go
Original file line number Diff line number Diff line change
@@ -20,13 +20,13 @@ package appregistry

import (
"context"
"fmt"

"google.golang.org/grpc"

registrypb "github.com/cs3org/go-cs3apis/cs3/app/registry/v1beta1"
"github.com/cs3org/reva/pkg/app"
"github.com/cs3org/reva/pkg/app/registry/static"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/mitchellh/mapstructure"
@@ -90,7 +90,7 @@ func getRegistry(c *config) (app.Registry, error) {
case "static":
return static.New(c.Static)
default:
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}
}

4 changes: 2 additions & 2 deletions internal/grpc/services/appregistry/appregistry_test.go
Original file line number Diff line number Diff line change
@@ -274,12 +274,12 @@ func TestNew(t *testing.T) {
{
name: "not existing driver",
m: map[string]interface{}{"Driver": "doesnotexist"},
wantErr: "driver not found: doesnotexist",
wantErr: "error: not found: driver not found: doesnotexist",
},
{
name: "empty",
m: map[string]interface{}{},
wantErr: "driver not found: ",
wantErr: "error: not found: driver not found: ",
},
{
name: "extra not existing field in setting",
4 changes: 2 additions & 2 deletions internal/grpc/services/authprovider/authprovider.go
Original file line number Diff line number Diff line change
@@ -66,12 +66,12 @@ func parseConfig(m map[string]interface{}) (*config, error) {

func getAuthManager(manager string, m map[string]map[string]interface{}) (auth.Manager, error) {
if manager == "" {
return nil, errors.New("authsvc: driver not configured for auth manager")
return nil, errtypes.InternalError("authsvc: driver not configured for auth manager")
}
if f, ok := registry.NewFuncs[manager]; ok {
return f(m[manager])
}
return nil, fmt.Errorf("authsvc: driver %s not found for auth manager", manager)
return nil, errtypes.NotFound(fmt.Sprintf("authsvc: driver %s not found for auth manager", manager))
}

// New returns a new AuthProviderServiceServer.
4 changes: 2 additions & 2 deletions internal/grpc/services/authregistry/authregistry.go
Original file line number Diff line number Diff line change
@@ -20,11 +20,11 @@ package authregistry

import (
"context"
"fmt"

registrypb "github.com/cs3org/go-cs3apis/cs3/auth/registry/v1beta1"
"github.com/cs3org/reva/pkg/auth"
"github.com/cs3org/reva/pkg/auth/registry/registry"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/mitchellh/mapstructure"
@@ -98,7 +98,7 @@ func getRegistry(c *config) (auth.Registry, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("authregistrysvc: driver not found: %s", c.Driver)
return nil, errtypes.NotFound("authregistrysvc: driver not found: " + c.Driver)
}

func (s *service) ListAuthProviders(ctx context.Context, req *registrypb.ListAuthProvidersRequest) (*registrypb.ListAuthProvidersResponse, error) {
7 changes: 4 additions & 3 deletions internal/grpc/services/datatx/datatx.go
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ import (
"context"

datatx "github.com/cs3org/go-cs3apis/cs3/tx/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/mitchellh/mapstructure"
@@ -82,18 +83,18 @@ func (s *service) UnprotectedEndpoints() []string {

func (s *service) CreateTransfer(ctx context.Context, req *datatx.CreateTransferRequest) (*datatx.CreateTransferResponse, error) {
return &datatx.CreateTransferResponse{
Status: status.NewUnimplemented(ctx, errors.New("CreateTransfer not implemented"), "CreateTransfer not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CreateTransfer not implemented"), "CreateTransfer not implemented"),
}, nil
}

func (s *service) GetTransferStatus(ctx context.Context, in *datatx.GetTransferStatusRequest) (*datatx.GetTransferStatusResponse, error) {
return &datatx.GetTransferStatusResponse{
Status: status.NewUnimplemented(ctx, errors.New("GetTransferStatus not implemented"), "GetTransferStatus not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("GetTransferStatus not implemented"), "GetTransferStatus not implemented"),
}, nil
}

func (s *service) CancelTransfer(ctx context.Context, in *datatx.CancelTransferRequest) (*datatx.CancelTransferResponse, error) {
return &datatx.CancelTransferResponse{
Status: status.NewUnimplemented(ctx, errors.New("CancelTransfer not implemented"), "CancelTransfer not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CancelTransfer not implemented"), "CancelTransfer not implemented"),
}, nil
}
4 changes: 2 additions & 2 deletions internal/grpc/services/gateway/appprovider.go
Original file line number Diff line number Diff line change
@@ -181,7 +181,7 @@ func (s *svc) openLocalResources(ctx context.Context, ri *storageprovider.Resour
accessToken, ok := token.ContextGetToken(ctx)
if !ok || accessToken == "" {
return &providerpb.OpenFileInAppProviderResponse{
Status: status.NewUnauthenticated(ctx, errors.New("Access token is invalid or empty"), ""),
Status: status.NewUnauthenticated(ctx, errtypes.InvalidCredentials("Access token is invalid or empty"), ""),
}, nil
}

@@ -246,7 +246,7 @@ func (s *svc) findAppProvider(ctx context.Context, ri *storageprovider.ResourceI
return nil, errtypes.NotFound("gateway: app provider not found for resource: " + ri.String())
}

return nil, errors.New("gateway: error finding a storage provider")
return nil, errtypes.InternalError("gateway: error finding a storage provider")
}

func getGRPCConfig(opaque *typespb.Opaque) (bool, bool) {
8 changes: 4 additions & 4 deletions internal/grpc/services/gateway/authprovider.go
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ func (s *svc) Authenticate(ctx context.Context, req *gateway.AuthenticateRequest
// find auth provider
c, err := s.findAuthProvider(ctx, req.Type)
if err != nil {
err = errors.New("gateway: error finding auth provider for type: " + req.Type)
err = errtypes.NotFound("gateway: error finding auth provider for type: " + req.Type)
return &gateway.AuthenticateResponse{
Status: status.NewInternal(ctx, err, "error getting auth provider client"),
}, nil
@@ -77,7 +77,7 @@ func (s *svc) Authenticate(ctx context.Context, req *gateway.AuthenticateRequest

// validate valid userId
if res.User == nil {
err := errors.New("gateway: user after Authenticate is nil")
err := errtypes.NotFound("gateway: user after Authenticate is nil")
log.Err(err).Msg("user is nil")
return &gateway.AuthenticateResponse{
Status: status.NewInternal(ctx, err, "user is nil"),
@@ -86,7 +86,7 @@ func (s *svc) Authenticate(ctx context.Context, req *gateway.AuthenticateRequest

uid := res.User.Id
if uid == nil {
err := errors.New("gateway: uid after Authenticate is nil")
err := errtypes.NotFound("gateway: uid after Authenticate is nil")
log.Err(err).Msg("user id is nil")
return &gateway.AuthenticateResponse{
Status: status.NewInternal(ctx, err, "user id is nil"),
@@ -191,5 +191,5 @@ func (s *svc) findAuthProvider(ctx context.Context, authType string) (provider.P
return nil, errtypes.NotFound("gateway: auth provider not found for type:" + authType)
}

return nil, errors.New("gateway: error finding an auth provider for type: " + authType)
return nil, errtypes.InternalError("gateway: error finding an auth provider for type: " + authType)
}
3 changes: 2 additions & 1 deletion internal/grpc/services/gateway/gateway.go
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@ import (
gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"

"github.com/ReneKroon/ttlcache/v2"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/sharedconf"
"github.com/cs3org/reva/pkg/token"
@@ -177,5 +178,5 @@ func getTokenManager(manager string, m map[string]map[string]interface{}) (token
return f(m[manager])
}

return nil, fmt.Errorf("driver %s not found for token manager", manager)
return nil, errtypes.NotFound(fmt.Sprintf("driver %s not found for token manager", manager))
}
4 changes: 2 additions & 2 deletions internal/grpc/services/gateway/ocmshareprovider.go
Original file line number Diff line number Diff line change
@@ -268,7 +268,7 @@ func (s *svc) UpdateReceivedOCMShare(ctx context.Context, req *ocm.UpdateReceive
}

// TODO(labkode): implementing updating display name
err = errors.New("gateway: update of display name is not yet implemented")
err = errtypes.NotSupported("gateway: update of display name is not yet implemented")
return &ocm.UpdateReceivedOCMShareResponse{
Status: status.NewUnimplemented(ctx, err, "error updating received share"),
}, nil
@@ -304,7 +304,7 @@ func (s *svc) createWebdavReference(ctx context.Context, share *ocm.Share) (*rpc
case "plain":
token = string(tokenOpaque.Value)
default:
err := errors.New("opaque entry decoder not recognized: " + tokenOpaque.Decoder)
err := errtypes.NotSupported("opaque entry decoder not recognized: " + tokenOpaque.Decoder)
return status.NewInternal(ctx, err, "invalid opaque entry decoder"), nil
}

3 changes: 2 additions & 1 deletion internal/grpc/services/gateway/publicshareprovider.go
Original file line number Diff line number Diff line change
@@ -24,13 +24,14 @@ import (
rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
link "github.com/cs3org/go-cs3apis/cs3/sharing/link/v1beta1"
"github.com/cs3org/reva/pkg/appctx"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc/todo/pool"
"github.com/pkg/errors"
)

func (s *svc) CreatePublicShare(ctx context.Context, req *link.CreatePublicShareRequest) (*link.CreatePublicShareResponse, error) {
if s.isSharedFolder(ctx, req.ResourceInfo.GetPath()) {
return nil, errors.New("gateway: can't create a public share of the share folder itself")
return nil, errtypes.AlreadyExists("gateway: can't create a public share of the share folder itself")
}

log := appctx.GetLogger(ctx)
16 changes: 8 additions & 8 deletions internal/grpc/services/gateway/storageprovider.go
Original file line number Diff line number Diff line change
@@ -244,7 +244,7 @@ func (s *svc) InitiateFileDownload(ctx context.Context, req *provider.InitiateFi
}

if statRes.Info.Type != provider.ResourceType_RESOURCE_TYPE_REFERENCE {
err := errors.New(fmt.Sprintf("gateway: expected reference: got:%+v", statRes.Info))
err := errtypes.BadRequest(fmt.Sprintf("gateway: expected reference: got:%+v", statRes.Info))
log.Err(err).Msg("gateway: error stating share name")
return &gateway.InitiateFileDownloadResponse{
Status: status.NewInternal(ctx, err, "gateway: error initiating download"),
@@ -456,7 +456,7 @@ func (s *svc) InitiateFileUpload(ctx context.Context, req *provider.InitiateFile
}

if statRes.Info.Type != provider.ResourceType_RESOURCE_TYPE_REFERENCE {
err := errors.New(fmt.Sprintf("gateway: expected reference: got:%+v", statRes.Info))
err := errtypes.BadRequest(fmt.Sprintf("gateway: expected reference: got:%+v", statRes.Info))
log.Err(err).Msg("gateway: error stating share name")
return &gateway.InitiateFileUploadResponse{
Status: status.NewInternal(ctx, err, "gateway: error initiating upload"),
@@ -1387,7 +1387,7 @@ func (s *svc) checkRef(ctx context.Context, ri *provider.ResourceInfo) (*provide
case "webdav":
return nil, "webdav", nil
default:
err := errors.New("gateway: no reference handler for scheme: " + uri.Scheme)
err := errtypes.BadRequest("gateway: no reference handler for scheme: " + uri.Scheme)
return nil, "", err
}
}
@@ -1429,12 +1429,12 @@ func (s *svc) handleCS3Ref(ctx context.Context, opaque string) (*provider.Resour
case rpc.Code_CODE_UNIMPLEMENTED:
return nil, errtypes.NotSupported(req.Ref.String())
default:
return nil, errors.New("gateway: error stating target reference")
return nil, errtypes.InternalError("gateway: error stating target reference")
}
}

if res.Info.Type == provider.ResourceType_RESOURCE_TYPE_REFERENCE {
err := errors.New("gateway: error the target of a reference cannot be another reference")
err := errtypes.BadRequest("gateway: error the target of a reference cannot be another reference")
return nil, err
}

@@ -1903,7 +1903,7 @@ func (s *svc) getSharedFolder(ctx context.Context) string {

func (s *svc) CreateSymlink(ctx context.Context, req *provider.CreateSymlinkRequest) (*provider.CreateSymlinkResponse, error) {
return &provider.CreateSymlinkResponse{
Status: status.NewUnimplemented(ctx, errors.New("CreateSymlink not implemented"), "CreateSymlink not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CreateSymlink not implemented"), "CreateSymlink not implemented"),
}, nil
}

@@ -1940,7 +1940,7 @@ func (s *svc) RestoreFileVersion(ctx context.Context, req *provider.RestoreFileV
}

func (s *svc) ListRecycleStream(_ *gateway.ListRecycleStreamRequest, _ gateway.GatewayAPI_ListRecycleStreamServer) error {
return errors.New("Unimplemented")
return errtypes.NotSupported("ListRecycleStream unimplemented")
}

// TODO use the ListRecycleRequest.Ref to only list the trash of a specific storage
@@ -2083,7 +2083,7 @@ func (s *svc) findProviders(ctx context.Context, ref *provider.Reference) ([]*re
}

if res.Providers == nil {
return nil, errors.New("gateway: provider is nil")
return nil, errtypes.NotFound("gateway: provider is nil")
}

return res.Providers, nil
4 changes: 2 additions & 2 deletions internal/grpc/services/gateway/usershareprovider.go
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@ import (
func (s *svc) CreateShare(ctx context.Context, req *collaboration.CreateShareRequest) (*collaboration.CreateShareResponse, error) {

if s.isSharedFolder(ctx, req.ResourceInfo.GetPath()) {
return nil, errors.New("gateway: can't share the share folder itself")
return nil, errtypes.AlreadyExists("gateway: can't share the share folder itself")
}

c, err := pool.GetUserShareProviderClient(s.c.UserShareProviderEndpoint)
@@ -344,7 +344,7 @@ func (s *svc) UpdateReceivedShare(ctx context.Context, req *collaboration.Update
}

// TODO(labkode): implementing updating display name
err = errors.New("gateway: update of display name is not yet implemented")
err = errtypes.NotSupported("gateway: update of display name is not yet implemented")
return &collaboration.UpdateReceivedShareResponse{
Status: status.NewUnimplemented(ctx, err, "error updating received share"),
}, nil
2 changes: 1 addition & 1 deletion internal/grpc/services/gateway/webdavstorageprovider.go
Original file line number Diff line number Diff line change
@@ -214,7 +214,7 @@ func (s *svc) webdavRefTransferEndpoint(ctx context.Context, targetURL string, n

func (s *svc) extractEndpointInfo(ctx context.Context, targetURL string) (*webdavEndpoint, error) {
if targetURL == "" {
return nil, errors.New("gateway: ref target is an empty uri")
return nil, errtypes.BadRequest("gateway: ref target is an empty uri")
}

uri, err := url.Parse(targetURL)
3 changes: 2 additions & 1 deletion internal/grpc/services/groupprovider/groupprovider.go
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ import (
"fmt"

grouppb "github.com/cs3org/go-cs3apis/cs3/identity/group/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/group"
"github.com/cs3org/reva/pkg/group/manager/registry"
"github.com/cs3org/reva/pkg/rgrpc"
@@ -62,7 +63,7 @@ func getDriver(c *config) (group.Manager, error) {
return f(c.Drivers[c.Driver])
}

return nil, fmt.Errorf("driver %s not found for group manager", c.Driver)
return nil, errtypes.NotFound(fmt.Sprintf("driver %s not found for group manager", c.Driver))
}

// New returns a new GroupProviderServiceServer.
13 changes: 7 additions & 6 deletions internal/grpc/services/ocmcore/ocmcore.go
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@ import (
ocmcore "github.com/cs3org/go-cs3apis/cs3/ocm/core/v1beta1"
ocm "github.com/cs3org/go-cs3apis/cs3/sharing/ocm/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/ocm/share"
"github.com/cs3org/reva/pkg/ocm/share/manager/registry"
"github.com/cs3org/reva/pkg/rgrpc"
@@ -64,7 +65,7 @@ func getShareManager(c *config) (share.Manager, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound(fmt.Sprintf("driver not found: %s", c.Driver))
}

func parseConfig(m map[string]interface{}) (*config, error) {
@@ -109,7 +110,7 @@ func (s *service) UnprotectedEndpoints() []string {
func (s *service) CreateOCMCoreShare(ctx context.Context, req *ocmcore.CreateOCMCoreShareRequest) (*ocmcore.CreateOCMCoreShareResponse, error) {
parts := strings.Split(req.ProviderId, ":")
if len(parts) < 2 {
err := errors.New("resource ID does not follow the layout storageid:opaqueid " + req.ProviderId)
err := errtypes.BadRequest("resource ID does not follow the layout storageid:opaqueid " + req.ProviderId)
return &ocmcore.CreateOCMCoreShareResponse{
Status: status.NewInternal(ctx, err, "error decoding resource ID"),
}, nil
@@ -124,7 +125,7 @@ func (s *service) CreateOCMCoreShare(ctx context.Context, req *ocmcore.CreateOCM
permOpaque, ok := req.Protocol.Opaque.Map["permissions"]
if !ok {
return &ocmcore.CreateOCMCoreShareResponse{
Status: status.NewInternal(ctx, errors.New("resource permissions not set"), ""),
Status: status.NewInternal(ctx, errtypes.BadRequest("resource permissions not set"), ""),
}, nil
}
switch permOpaque.Decoder {
@@ -136,7 +137,7 @@ func (s *service) CreateOCMCoreShare(ctx context.Context, req *ocmcore.CreateOCM
}, nil
}
default:
err := errors.New("opaque entry decoder not recognized")
err := errtypes.NotSupported("opaque entry decoder not recognized")
return &ocmcore.CreateOCMCoreShareResponse{
Status: status.NewInternal(ctx, err, "invalid opaque entry decoder"),
}, nil
@@ -146,14 +147,14 @@ func (s *service) CreateOCMCoreShare(ctx context.Context, req *ocmcore.CreateOCM
tokenOpaque, ok := req.Protocol.Opaque.Map["token"]
if !ok {
return &ocmcore.CreateOCMCoreShareResponse{
Status: status.NewInternal(ctx, errors.New("token not set"), ""),
Status: status.NewInternal(ctx, errtypes.PermissionDenied("token not set"), ""),
}, nil
}
switch tokenOpaque.Decoder {
case "plain":
token = string(tokenOpaque.Value)
default:
err := errors.New("opaque entry decoder not recognized: " + tokenOpaque.Decoder)
err := errtypes.NotSupported("opaque entry decoder not recognized: " + tokenOpaque.Decoder)
return &ocmcore.CreateOCMCoreShareResponse{
Status: status.NewInternal(ctx, err, "invalid opaque entry decoder"),
}, nil
4 changes: 2 additions & 2 deletions internal/grpc/services/ocminvitemanager/ocminvitemanager.go
Original file line number Diff line number Diff line change
@@ -20,9 +20,9 @@ package ocminvitemanager

import (
"context"
"fmt"

invitepb "github.com/cs3org/go-cs3apis/cs3/ocm/invite/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/ocm/invite"
"github.com/cs3org/reva/pkg/ocm/invite/manager/registry"
"github.com/cs3org/reva/pkg/rgrpc"
@@ -60,7 +60,7 @@ func getInviteManager(c *config) (invite.Manager, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

func parseConfig(m map[string]interface{}) (*config, error) {
Original file line number Diff line number Diff line change
@@ -20,9 +20,9 @@ package ocmproviderauthorizer

import (
"context"
"fmt"

ocmprovider "github.com/cs3org/go-cs3apis/cs3/ocm/provider/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/ocm/provider"
"github.com/cs3org/reva/pkg/ocm/provider/authorizer/registry"
"github.com/cs3org/reva/pkg/rgrpc"
@@ -60,7 +60,7 @@ func getProviderAuthorizer(c *config) (provider.Authorizer, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

func parseConfig(m map[string]interface{}) (*config, error) {
14 changes: 7 additions & 7 deletions internal/grpc/services/ocmshareprovider/ocmshareprovider.go
Original file line number Diff line number Diff line change
@@ -20,9 +20,9 @@ package ocmshareprovider

import (
"context"
"fmt"

ocm "github.com/cs3org/go-cs3apis/cs3/sharing/ocm/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/ocm/share"
"github.com/cs3org/reva/pkg/ocm/share/manager/registry"
"github.com/cs3org/reva/pkg/rgrpc"
@@ -60,7 +60,7 @@ func getShareManager(c *config) (share.Manager, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

func parseConfig(m map[string]interface{}) (*config, error) {
@@ -106,22 +106,22 @@ func (s *service) CreateOCMShare(ctx context.Context, req *ocm.CreateOCMShareReq

if req.Opaque == nil {
return &ocm.CreateOCMShareResponse{
Status: status.NewInternal(ctx, errors.New("can't find resource permissions"), ""),
Status: status.NewInternal(ctx, errtypes.BadRequest("can't find resource permissions"), ""),
}, nil
}

var permissions string
permOpaque, ok := req.Opaque.Map["permissions"]
if !ok {
return &ocm.CreateOCMShareResponse{
Status: status.NewInternal(ctx, errors.New("resource permissions not set"), ""),
Status: status.NewInternal(ctx, errtypes.BadRequest("resource permissions not set"), ""),
}, nil
}
switch permOpaque.Decoder {
case "plain":
permissions = string(permOpaque.Value)
default:
err := errors.New("opaque entry decoder not recognized: " + permOpaque.Decoder)
err := errtypes.NotSupported("opaque entry decoder not recognized: " + permOpaque.Decoder)
return &ocm.CreateOCMShareResponse{
Status: status.NewInternal(ctx, err, "invalid opaque entry decoder"),
}, nil
@@ -131,14 +131,14 @@ func (s *service) CreateOCMShare(ctx context.Context, req *ocm.CreateOCMShareReq
nameOpaque, ok := req.Opaque.Map["name"]
if !ok {
return &ocm.CreateOCMShareResponse{
Status: status.NewInternal(ctx, errors.New("resource name not set"), ""),
Status: status.NewInternal(ctx, errtypes.BadRequest("resource name not set"), ""),
}, nil
}
switch nameOpaque.Decoder {
case "plain":
name = string(nameOpaque.Value)
default:
err := errors.New("opaque entry decoder not recognized: " + nameOpaque.Decoder)
err := errtypes.NotSupported("opaque entry decoder not recognized: " + nameOpaque.Decoder)
return &ocm.CreateOCMShareResponse{
Status: status.NewInternal(ctx, err, "invalid opaque entry decoder"),
}, nil
Original file line number Diff line number Diff line change
@@ -20,7 +20,6 @@ package publicshareprovider

import (
"context"
"fmt"

link "github.com/cs3org/go-cs3apis/cs3/sharing/link/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
@@ -60,7 +59,7 @@ func getShareManager(c *config) (publicshare.Manager, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

// TODO(labkode): add ctx to Close.
Original file line number Diff line number Diff line change
@@ -30,6 +30,7 @@ import (
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
typesv1beta1 "github.com/cs3org/go-cs3apis/cs3/types/v1beta1"
"github.com/cs3org/reva/pkg/appctx"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/cs3org/reva/pkg/rgrpc/todo/pool"
@@ -587,12 +588,12 @@ func filterPermissions(l *provider.ResourcePermissions, r *provider.ResourcePerm

func (s *service) unwrap(ctx context.Context, ref *provider.Reference) (token string, relativePath string, err error) {
if ref.GetId() != nil {
return "", "", errors.New("need path based ref: got " + ref.String())
return "", "", errtypes.BadRequest("need path based ref: got " + ref.String())
}

if ref.GetPath() == "" {
// abort, no valid id nor path
return "", "", errors.New("invalid ref: " + ref.String())
return "", "", errtypes.BadRequest("invalid ref: " + ref.String())
}

// i.e path: /public/{token}/path/to/subfolders
24 changes: 12 additions & 12 deletions internal/grpc/services/storageprovider/storageprovider.go
Original file line number Diff line number Diff line change
@@ -116,7 +116,7 @@ func parseXSTypes(xsTypes map[string]uint32) ([]*provider.ResourceChecksumPriori
for xs, prio := range xsTypes {
t := PKG2GRPCXS(xs)
if t == provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_INVALID {
return nil, fmt.Errorf("checksum type is invalid: %s", xs)
return nil, errtypes.BadRequest("checksum type is invalid: " + xs)
}
xsPrio := &provider.ResourceChecksumPriority{
Priority: prio,
@@ -171,7 +171,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) {
}

if len(xsTypes) == 0 {
return nil, fmt.Errorf("no available checksum, please set in config")
return nil, errtypes.NotFound("no available checksum, please set in config")
}

registerMimeTypes(c.MimeTypes)
@@ -299,7 +299,7 @@ func (s *service) InitiateFileUpload(ctx context.Context, req *provider.Initiate
}
if newRef.GetPath() == "/" {
return &provider.InitiateFileUploadResponse{
Status: status.NewInternal(ctx, errors.New("can't upload to mount path"), "can't upload to mount path"),
Status: status.NewInternal(ctx, errtypes.BadRequest("can't upload to mount path"), "can't upload to mount path"),
}, nil
}

@@ -424,25 +424,25 @@ func (s *service) CreateHome(ctx context.Context, req *provider.CreateHomeReques

func (s *service) CreateStorageSpace(ctx context.Context, req *provider.CreateStorageSpaceRequest) (*provider.CreateStorageSpaceResponse, error) {
return &provider.CreateStorageSpaceResponse{
Status: status.NewUnimplemented(ctx, errors.New("CreateStorageSpace not implemented"), "CreateStorageSpace not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CreateStorageSpace not implemented"), "CreateStorageSpace not implemented"),
}, nil
}

func (s *service) ListStorageSpaces(ctx context.Context, req *provider.ListStorageSpacesRequest) (*provider.ListStorageSpacesResponse, error) {
return &provider.ListStorageSpacesResponse{
Status: status.NewUnimplemented(ctx, errors.New("ListStorageSpaces not implemented"), "ListStorageSpaces not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("ListStorageSpaces not implemented"), "ListStorageSpaces not implemented"),
}, nil
}

func (s *service) UpdateStorageSpace(ctx context.Context, req *provider.UpdateStorageSpaceRequest) (*provider.UpdateStorageSpaceResponse, error) {
return &provider.UpdateStorageSpaceResponse{
Status: status.NewUnimplemented(ctx, errors.New("UpdateStorageSpace not implemented"), "UpdateStorageSpace not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("UpdateStorageSpace not implemented"), "UpdateStorageSpace not implemented"),
}, nil
}

func (s *service) DeleteStorageSpace(ctx context.Context, req *provider.DeleteStorageSpaceRequest) (*provider.DeleteStorageSpaceResponse, error) {
return &provider.DeleteStorageSpaceResponse{
Status: status.NewUnimplemented(ctx, errors.New("DeleteStorageSpace not implemented"), "DeleteStorageSpace not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("DeleteStorageSpace not implemented"), "DeleteStorageSpace not implemented"),
}, nil
}

@@ -486,7 +486,7 @@ func (s *service) Delete(ctx context.Context, req *provider.DeleteRequest) (*pro
}
if newRef.GetPath() == "/" {
return &provider.DeleteResponse{
Status: status.NewInternal(ctx, errors.New("can't delete mount path"), "can't delete mount path"),
Status: status.NewInternal(ctx, errtypes.BadRequest("can't delete mount path"), "can't delete mount path"),
}, nil
}

@@ -1064,7 +1064,7 @@ func (s *service) CreateReference(ctx context.Context, req *provider.CreateRefer

func (s *service) CreateSymlink(ctx context.Context, req *provider.CreateSymlinkRequest) (*provider.CreateSymlinkResponse, error) {
return &provider.CreateSymlinkResponse{
Status: status.NewUnimplemented(ctx, errors.New("CreateSymlink not implemented"), "CreateSymlink not implemented"),
Status: status.NewUnimplemented(ctx, errtypes.NotSupported("CreateSymlink not implemented"), "CreateSymlink not implemented"),
}, nil
}

@@ -1097,7 +1097,7 @@ func getFS(c *config) (storage.FS, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

func (s *service) unwrap(ctx context.Context, ref *provider.Reference) (*provider.Reference, error) {
@@ -1116,7 +1116,7 @@ func (s *service) unwrap(ctx context.Context, ref *provider.Reference) (*provide

if ref.GetPath() == "" {
// abort, no valid id nor path
return nil, errors.New("ref is invalid: " + ref.String())
return nil, errtypes.BadRequest("ref is invalid: " + ref.String())
}

fn := ref.GetPath()
@@ -1138,7 +1138,7 @@ func (s *service) trimMountPrefix(fn string) (string, error) {
if strings.HasPrefix(fn, s.mountPath) {
return path.Join("/", strings.TrimPrefix(fn, s.mountPath)), nil
}
return "", errors.New(fmt.Sprintf("path=%q does not belong to this storage provider mount path=%q"+fn, s.mountPath))
return "", errtypes.BadRequest(fmt.Sprintf("path=%q does not belong to this storage provider mount path=%q", fn, s.mountPath))
}

func (s *service) wrap(ctx context.Context, ri *provider.ResourceInfo) error {
3 changes: 1 addition & 2 deletions internal/grpc/services/storageregistry/storageregistry.go
Original file line number Diff line number Diff line change
@@ -20,7 +20,6 @@ package storageregistry

import (
"context"
"fmt"

registrypb "github.com/cs3org/go-cs3apis/cs3/storage/registry/v1beta1"
"github.com/cs3org/reva/pkg/appctx"
@@ -97,7 +96,7 @@ func getRegistry(c *config) (storage.Registry, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

func (s *service) ListStorageProviders(ctx context.Context, req *registrypb.ListStorageProvidersRequest) (*registrypb.ListStorageProvidersResponse, error) {
3 changes: 2 additions & 1 deletion internal/grpc/services/userprovider/userprovider.go
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ import (
"fmt"

userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/cs3org/reva/pkg/user"
@@ -62,7 +63,7 @@ func getDriver(c *config) (user.Manager, error) {
return f(c.Drivers[c.Driver])
}

return nil, fmt.Errorf("driver %s not found for user manager", c.Driver)
return nil, errtypes.NotFound(fmt.Sprintf("driver %s not found for user manager", c.Driver))
}

// New returns a new UserProviderServiceServer.
Original file line number Diff line number Diff line change
@@ -20,12 +20,12 @@ package usershareprovider

import (
"context"
"fmt"

userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
collaboration "github.com/cs3org/go-cs3apis/cs3/sharing/collaboration/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
"github.com/cs3org/reva/pkg/appctx"
"github.com/cs3org/reva/pkg/errtypes"
"github.com/cs3org/reva/pkg/rgrpc"
"github.com/cs3org/reva/pkg/rgrpc/status"
"github.com/cs3org/reva/pkg/share"
@@ -60,7 +60,7 @@ func getShareManager(c *config) (share.Manager, error) {
if f, ok := registry.NewFuncs[c.Driver]; ok {
return f(c.Drivers[c.Driver])
}
return nil, fmt.Errorf("driver not found: %s", c.Driver)
return nil, errtypes.NotFound("driver not found: " + c.Driver)
}

// TODO(labkode): add ctx to Close.