diff --git a/changelog/unreleased/create-symlink-stubs.md b/changelog/unreleased/create-symlink-stubs.md new file mode 100644 index 0000000000..e90c3279de --- /dev/null +++ b/changelog/unreleased/create-symlink-stubs.md @@ -0,0 +1,3 @@ +Enhancement: Add GRPC stubs for CreateSymlink method + +https://github.com/cs3org/reva/pull/1228 diff --git a/go.mod b/go.mod index 3a29009d99..183435cdf5 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/cheggaaa/pb v1.0.29 github.com/coreos/go-oidc v2.2.1+incompatible github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e - github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666 + github.com/cs3org/go-cs3apis v0.0.0-20200903142434-7dfeb0059208 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/eventials/go-tus v0.0.0-20200718001131-45c7ec8f5d59 github.com/go-ldap/ldap/v3 v3.2.3 diff --git a/go.sum b/go.sum index 00d380131c..71c976e743 100644 --- a/go.sum +++ b/go.sum @@ -132,6 +132,8 @@ github.com/cs3org/go-cs3apis v0.0.0-20200730121022-c4f3d4f7ddfd h1:uMaudkC7znaiI github.com/cs3org/go-cs3apis v0.0.0-20200730121022-c4f3d4f7ddfd/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666 h1:E7VsSSN/2YZLSwrDMJJdAWU11lP7W1qkcXbrslb0PM0= github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/go-cs3apis v0.0.0-20200903142434-7dfeb0059208 h1:EnNRlx2qlHh1l4rLIdlA2QVwvHyKT1KFZxRyDqm0NNQ= +github.com/cs3org/go-cs3apis v0.0.0-20200903142434-7dfeb0059208/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/internal/grpc/services/gateway/storageprovider.go b/internal/grpc/services/gateway/storageprovider.go index 386248a3da..c3ce926199 100644 --- a/internal/grpc/services/gateway/storageprovider.go +++ b/internal/grpc/services/gateway/storageprovider.go @@ -2025,6 +2025,12 @@ func (s *svc) getSharedFolder(ctx context.Context) string { return shareFolder } +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"), + }, nil +} + func (s *svc) ListFileVersions(ctx context.Context, req *provider.ListFileVersionsRequest) (*provider.ListFileVersionsResponse, error) { c, err := s.find(ctx, req.Ref) if err != nil { diff --git a/internal/grpc/services/publicstorageprovider/publicstorageprovider.go b/internal/grpc/services/publicstorageprovider/publicstorageprovider.go index a9984a952b..9af3f5bb44 100644 --- a/internal/grpc/services/publicstorageprovider/publicstorageprovider.go +++ b/internal/grpc/services/publicstorageprovider/publicstorageprovider.go @@ -494,6 +494,10 @@ func (s *service) CreateReference(ctx context.Context, req *provider.CreateRefer return nil, gstatus.Errorf(codes.Unimplemented, "method not implemented") } +func (s *service) CreateSymlink(ctx context.Context, req *provider.CreateSymlinkRequest) (*provider.CreateSymlinkResponse, error) { + return nil, gstatus.Errorf(codes.Unimplemented, "method not implemented") +} + func (s *service) UpdateGrant(ctx context.Context, req *provider.UpdateGrantRequest) (*provider.UpdateGrantResponse, error) { return nil, gstatus.Errorf(codes.Unimplemented, "method not implemented") } diff --git a/internal/grpc/services/storageprovider/storageprovider.go b/internal/grpc/services/storageprovider/storageprovider.go index c019132c88..39eaa9f2e7 100644 --- a/internal/grpc/services/storageprovider/storageprovider.go +++ b/internal/grpc/services/storageprovider/storageprovider.go @@ -878,52 +878,6 @@ func (s *service) AddGrant(ctx context.Context, req *provider.AddGrantRequest) ( return res, nil } -func (s *service) CreateReference(ctx context.Context, req *provider.CreateReferenceRequest) (*provider.CreateReferenceResponse, error) { - log := appctx.GetLogger(ctx) - - // parse uri is valid - u, err := url.Parse(req.TargetUri) - if err != nil { - log.Err(err).Msg("invalid target uri") - return &provider.CreateReferenceResponse{ - Status: status.NewInvalidArg(ctx, "target uri is invalid: "+err.Error()), - }, nil - } - - ref := &provider.Reference{ - Spec: &provider.Reference_Path{ - Path: req.Path, - }, - } - - newRef, err := s.unwrap(ctx, ref) - if err != nil { - return &provider.CreateReferenceResponse{ - Status: status.NewInternal(ctx, err, "error unwrapping path"), - }, nil - } - - if err := s.storage.CreateReference(ctx, newRef.GetPath(), u); err != nil { - log.Err(err).Msg("error calling CreateReference") - var st *rpc.Status - switch err.(type) { - case errtypes.IsNotFound: - st = status.NewNotFound(ctx, "path not found when creating reference") - case errtypes.PermissionDenied: - st = status.NewPermissionDenied(ctx, err, "permission denied") - default: - st = status.NewInternal(ctx, err, "error creating reference") - } - return &provider.CreateReferenceResponse{ - Status: st, - }, nil - } - - return &provider.CreateReferenceResponse{ - Status: status.NewOK(ctx), - }, nil -} - func (s *service) UpdateGrant(ctx context.Context, req *provider.UpdateGrantRequest) (*provider.UpdateGrantResponse, error) { // check grantee type is valid if req.Grant.Grantee.Type == provider.GranteeType_GRANTEE_TYPE_INVALID { @@ -996,6 +950,58 @@ func (s *service) RemoveGrant(ctx context.Context, req *provider.RemoveGrantRequ return res, nil } +func (s *service) CreateReference(ctx context.Context, req *provider.CreateReferenceRequest) (*provider.CreateReferenceResponse, error) { + log := appctx.GetLogger(ctx) + + // parse uri is valid + u, err := url.Parse(req.TargetUri) + if err != nil { + log.Err(err).Msg("invalid target uri") + return &provider.CreateReferenceResponse{ + Status: status.NewInvalidArg(ctx, "target uri is invalid: "+err.Error()), + }, nil + } + + ref := &provider.Reference{ + Spec: &provider.Reference_Path{ + Path: req.Path, + }, + } + + newRef, err := s.unwrap(ctx, ref) + if err != nil { + return &provider.CreateReferenceResponse{ + Status: status.NewInternal(ctx, err, "error unwrapping path"), + }, nil + } + + if err := s.storage.CreateReference(ctx, newRef.GetPath(), u); err != nil { + log.Err(err).Msg("error calling CreateReference") + var st *rpc.Status + switch err.(type) { + case errtypes.IsNotFound: + st = status.NewNotFound(ctx, "path not found when creating reference") + case errtypes.PermissionDenied: + st = status.NewPermissionDenied(ctx, err, "permission denied") + default: + st = status.NewInternal(ctx, err, "error creating reference") + } + return &provider.CreateReferenceResponse{ + Status: st, + }, nil + } + + return &provider.CreateReferenceResponse{ + Status: status.NewOK(ctx), + }, nil +} + +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"), + }, nil +} + func (s *service) GetQuota(ctx context.Context, req *provider.GetQuotaRequest) (*provider.GetQuotaResponse, error) { total, used, err := s.storage.GetQuota(ctx) if err != nil {