Skip to content

Commit

Permalink
Add GRPC stubs for CreateSymlink method (#1228)
Browse files Browse the repository at this point in the history
  • Loading branch information
ishank011 authored Oct 7, 2020
1 parent 4a9be34 commit 2c31ba8
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 47 deletions.
3 changes: 3 additions & 0 deletions changelog/unreleased/create-symlink-stubs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Enhancement: Add GRPC stubs for CreateSymlink method

https://github.com/cs3org/reva/pull/1228
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
6 changes: 6 additions & 0 deletions internal/grpc/services/gateway/storageprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
Expand Down
98 changes: 52 additions & 46 deletions internal/grpc/services/storageprovider/storageprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit 2c31ba8

Please sign in to comment.