Skip to content

Commit

Permalink
centralize space id util functions (#2816)
Browse files Browse the repository at this point in the history
  • Loading branch information
David Christofas authored May 3, 2022
1 parent 28d8d25 commit afc8ead
Show file tree
Hide file tree
Showing 32 changed files with 546 additions and 566 deletions.
5 changes: 5 additions & 0 deletions changelog/unreleased/centralize-space-id-functions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Change: Merge the utility functions for space ids/references into one package

Merged the utility functions regarding space ids or references into one package. Also updated the functions to support the newly added provider id in the spaces id.

https://github.com/cs3org/reva/pull/2816
8 changes: 4 additions & 4 deletions internal/grpc/interceptors/auth/scope.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ import (
"github.com/cs3org/reva/v2/pkg/errtypes"
statuspkg "github.com/cs3org/reva/v2/pkg/rgrpc/status"
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
"github.com/cs3org/reva/v2/pkg/storagespace"
"github.com/cs3org/reva/v2/pkg/token"
"github.com/cs3org/reva/v2/pkg/utils"
"github.com/cs3org/reva/v2/pkg/utils/resourceid"
"google.golang.org/grpc/metadata"
)

Expand Down Expand Up @@ -137,7 +137,7 @@ func resolveLightweightScope(ctx context.Context, ref *provider.Reference, scope
}

for _, share := range shares.Shares {
shareKey := "lw:" + user.Id.OpaqueId + scopeDelimiter + resourceid.OwnCloudResourceIDWrap(share.Share.ResourceId)
shareKey := "lw:" + user.Id.OpaqueId + scopeDelimiter + storagespace.FormatResourceID(*share.Share.ResourceId)
_ = scopeExpansionCache.SetWithExpire(shareKey, nil, scopeCacheExpiration*time.Second)

if ref.ResourceId != nil && utils.ResourceIDEqual(share.Share.ResourceId, ref.ResourceId) {
Expand Down Expand Up @@ -174,7 +174,7 @@ func resolveUserShare(ctx context.Context, ref *provider.Reference, scope *authp

func checkCacheForNestedResource(ctx context.Context, ref *provider.Reference, resource *provider.ResourceId, client gateway.GatewayAPIClient, mgr token.Manager) error {
// Check if this ref is cached
key := resourceid.OwnCloudResourceIDWrap(resource) + scopeDelimiter + getRefKey(ref)
key := storagespace.FormatResourceID(*resource) + scopeDelimiter + getRefKey(ref)
if _, err := scopeExpansionCache.Get(key); err == nil {
return nil
}
Expand Down Expand Up @@ -397,5 +397,5 @@ func getRefKey(ref *provider.Reference) string {
if ref.Path != "" {
return ref.Path
}
return resourceid.OwnCloudResourceIDWrap(ref.ResourceId)
return storagespace.FormatResourceID(*ref.ResourceId)
}
5 changes: 3 additions & 2 deletions internal/grpc/services/gateway/storageprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
sdk "github.com/cs3org/reva/v2/pkg/sdk/common"
"github.com/cs3org/reva/v2/pkg/share"
"github.com/cs3org/reva/v2/pkg/storagespace"
"github.com/cs3org/reva/v2/pkg/utils"
"github.com/golang-jwt/jwt"
"github.com/pkg/errors"
Expand Down Expand Up @@ -221,7 +222,7 @@ func (s *svc) ListStorageSpaces(ctx context.Context, req *provider.ListStorageSp
for _, f := range req.Filters {
switch f.Type {
case provider.ListStorageSpacesRequest_Filter_TYPE_ID:
sid, oid, err := utils.SplitStorageSpaceID(f.GetId().OpaqueId)
sid, oid, err := storagespace.SplitID(f.GetId().OpaqueId)
if err != nil {
continue
}
Expand Down Expand Up @@ -308,7 +309,7 @@ func (s *svc) DeleteStorageSpace(ctx context.Context, req *provider.DeleteStorag
_, purge = opaque.Map["purge"]
}

storageid, opaqeid, err := utils.SplitStorageSpaceID(req.Id.OpaqueId)
storageid, opaqeid, err := storagespace.SplitID(req.Id.OpaqueId)
if err != nil {
return &provider.DeleteStorageSpaceResponse{
Status: status.NewStatusFromErrType(ctx, fmt.Sprintf("gateway could not split space id %s", req.GetId().GetOpaqueId()), err),
Expand Down
4 changes: 2 additions & 2 deletions internal/grpc/services/gateway/usershareprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
"github.com/cs3org/reva/v2/pkg/share"
"github.com/cs3org/reva/v2/pkg/storage/utils/grants"
"github.com/cs3org/reva/v2/pkg/storagespace"
rtrace "github.com/cs3org/reva/v2/pkg/trace"
"github.com/cs3org/reva/v2/pkg/utils/resourceid"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -779,7 +779,7 @@ func refIsSpaceRoot(ref *provider.ResourceId) bool {
if ref.StorageId == "" || ref.OpaqueId == "" {
return false
}
sid, _ := resourceid.StorageIDUnwrap(ref.GetStorageId())
_, sid := storagespace.SplitStorageID(ref.GetStorageId())
return sid == ref.OpaqueId
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ import (
"github.com/cs3org/reva/v2/pkg/rgrpc"
"github.com/cs3org/reva/v2/pkg/rgrpc/status"
"github.com/cs3org/reva/v2/pkg/rgrpc/todo/pool"
"github.com/cs3org/reva/v2/pkg/storagespace"
rtrace "github.com/cs3org/reva/v2/pkg/trace"
"github.com/cs3org/reva/v2/pkg/utils"
"github.com/cs3org/reva/v2/pkg/utils/resourceid"
"github.com/mitchellh/mapstructure"
"github.com/pkg/errors"
"go.opentelemetry.io/otel/attribute"
Expand Down Expand Up @@ -104,7 +104,7 @@ func New(m map[string]interface{}, ss *grpc.Server) (rgrpc.Service, error) {

func (s *service) SetArbitraryMetadata(ctx context.Context, req *provider.SetArbitraryMetadataRequest) (*provider.SetArbitraryMetadataResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -126,7 +126,7 @@ func (s *service) UnsetArbitraryMetadata(ctx context.Context, req *provider.Unse
// SetLock puts a lock on the given reference
func (s *service) SetLock(ctx context.Context, req *provider.SetLockRequest) (*provider.SetLockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -144,7 +144,7 @@ func (s *service) SetLock(ctx context.Context, req *provider.SetLockRequest) (*p
// GetLock returns an existing lock on the given reference
func (s *service) GetLock(ctx context.Context, req *provider.GetLockRequest) (*provider.GetLockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -162,7 +162,7 @@ func (s *service) GetLock(ctx context.Context, req *provider.GetLockRequest) (*p
// RefreshLock refreshes an existing lock on the given reference
func (s *service) RefreshLock(ctx context.Context, req *provider.RefreshLockRequest) (*provider.RefreshLockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -180,7 +180,7 @@ func (s *service) RefreshLock(ctx context.Context, req *provider.RefreshLockRequ
// Unlock removes an existing lock from the given reference
func (s *service) Unlock(ctx context.Context, req *provider.UnlockRequest) (*provider.UnlockResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -197,7 +197,7 @@ func (s *service) Unlock(ctx context.Context, req *provider.UnlockRequest) (*pro

func (s *service) InitiateFileDownload(ctx context.Context, req *provider.InitiateFileDownloadRequest) (*provider.InitiateFileDownloadResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

statReq := &provider.StatRequest{Ref: req.Ref}
Expand Down Expand Up @@ -323,7 +323,7 @@ func (s *service) initiateFileDownload(ctx context.Context, req *provider.Initia

func (s *service) InitiateFileUpload(ctx context.Context, req *provider.InitiateFileUploadRequest) (*provider.InitiateFileUploadResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

cs3Ref, _, ls, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand Down Expand Up @@ -411,7 +411,7 @@ func (s *service) CreateStorageSpace(ctx context.Context, req *provider.CreateSt
func (s *service) ListStorageSpaces(ctx context.Context, req *provider.ListStorageSpacesRequest) (*provider.ListStorageSpacesResponse, error) {
for i, f := range req.Filters {
if f.Type == provider.ListStorageSpacesRequest_Filter_TYPE_ID {
id, _ := resourceid.StorageIDUnwrap(f.GetId().GetOpaqueId())
_, id := storagespace.SplitStorageID(f.GetId().GetOpaqueId())
req.Filters[i].Term = &provider.ListStorageSpacesRequest_Filter_Id{Id: &provider.StorageSpaceId{OpaqueId: id}}
break
}
Expand All @@ -431,7 +431,7 @@ func (s *service) ListStorageSpaces(ctx context.Context, req *provider.ListStora
}
spaceTypes[spaceType] = exists
case provider.ListStorageSpacesRequest_Filter_TYPE_ID:
spaceid, shareid, err := utils.SplitStorageSpaceID(f.GetId().OpaqueId)
spaceid, shareid, err := storagespace.SplitID(f.GetId().OpaqueId)
if err != nil {
continue
}
Expand Down Expand Up @@ -549,7 +549,7 @@ func (s *service) DeleteStorageSpace(ctx context.Context, req *provider.DeleteSt

func (s *service) CreateContainer(ctx context.Context, req *provider.CreateContainerRequest) (*provider.CreateContainerResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "CreateContainer")
Expand Down Expand Up @@ -593,7 +593,7 @@ func (s *service) CreateContainer(ctx context.Context, req *provider.CreateConta

func (s *service) TouchFile(ctx context.Context, req *provider.TouchFileRequest) (*provider.TouchFileResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ref, _, _, st, err := s.translatePublicRefToCS3Ref(ctx, req.Ref)
Expand All @@ -610,7 +610,7 @@ func (s *service) TouchFile(ctx context.Context, req *provider.TouchFileRequest)

func (s *service) Delete(ctx context.Context, req *provider.DeleteRequest) (*provider.DeleteResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "Delete")
Expand Down Expand Up @@ -654,10 +654,10 @@ func (s *service) Delete(ctx context.Context, req *provider.DeleteRequest) (*pro

func (s *service) Move(ctx context.Context, req *provider.MoveRequest) (*provider.MoveResponse, error) {
if req.Source.GetResourceId() != nil {
req.Source.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Source.ResourceId.StorageId)
_, req.Source.ResourceId.StorageId = storagespace.SplitStorageID(req.Source.ResourceId.StorageId)
}
if req.Destination.GetResourceId() != nil {
req.Destination.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Destination.ResourceId.StorageId)
_, req.Destination.ResourceId.StorageId = storagespace.SplitStorageID(req.Destination.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "Move")
Expand Down Expand Up @@ -724,7 +724,7 @@ func (s *service) Move(ctx context.Context, req *provider.MoveRequest) (*provide

func (s *service) Stat(ctx context.Context, req *provider.StatRequest) (*provider.StatResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

ctx, span := rtrace.Provider.Tracer("publicstorageprovider").Start(ctx, "Stat")
Expand Down Expand Up @@ -825,7 +825,7 @@ func (s *service) ListContainerStream(req *provider.ListContainerStreamRequest,

func (s *service) ListContainer(ctx context.Context, req *provider.ListContainerRequest) (*provider.ListContainerResponse, error) {
if req.Ref.GetResourceId() != nil {
req.Ref.ResourceId.StorageId, _ = resourceid.StorageIDUnwrap(req.Ref.ResourceId.StorageId)
_, req.Ref.ResourceId.StorageId = storagespace.SplitStorageID(req.Ref.ResourceId.StorageId)
}

share, ok := extractLinkFromScope(ctx)
Expand Down
Loading

0 comments on commit afc8ead

Please sign in to comment.