Skip to content

Commit

Permalink
remove duplicate logic for listing with no prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
mobyvb committed Oct 15, 2018
1 parent f8b78fa commit dd152f6
Showing 1 changed file with 14 additions and 35 deletions.
49 changes: 14 additions & 35 deletions pkg/storage/streams/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,10 +377,6 @@ func (s *streamStore) List(ctx context.Context, prefix, startAfter, endBefore pa
metaFlags |= meta.UserDefined
}

if prefix == nil {
return listNoPrefix(ctx, s, startAfter, endBefore, recursive, limit, metaFlags)
}

encPrefix, err := encryptAfterBucket(prefix, s.rootKey)
if err != nil {
return nil, false, err
Expand All @@ -391,11 +387,11 @@ func (s *streamStore) List(ctx context.Context, prefix, startAfter, endBefore pa
return nil, false, err
}

encStartAfter, err := startAfter.Encrypt(prefixKey)
encStartAfter, err := s.encryptMarker(startAfter, prefixKey)
if err != nil {
return nil, false, err
}
encEndBefore, err := endBefore.Encrypt(prefixKey)
encEndBefore, err := s.encryptMarker(endBefore, prefixKey)
if err != nil {
return nil, false, err
}
Expand All @@ -411,7 +407,7 @@ func (s *streamStore) List(ctx context.Context, prefix, startAfter, endBefore pa
if err != nil {
return nil, false, err
}
decPath, err := item.Path.Decrypt(prefixKey)
decPath, err := s.decryptMarker(item.Path, prefixKey)
if err != nil {
return nil, false, err
}
Expand All @@ -421,37 +417,20 @@ func (s *streamStore) List(ctx context.Context, prefix, startAfter, endBefore pa
return items, more, nil
}

func listNoPrefix(ctx context.Context, s *streamStore, startAfter, endBefore paths.Path, recursive bool, limit int, metaFlags uint32) (items []ListItem, more bool, err error) {
defer mon.Task()(&ctx)(&err)

encStartAfter, err := encryptAfterBucket(startAfter, s.rootKey)
if err != nil {
return nil, false, err
}
encEndBefore, err := encryptAfterBucket(endBefore, s.rootKey)
if err != nil {
return nil, false, err
}

segments, more, err := s.segments.List(ctx, paths.New("l"), encStartAfter, encEndBefore, recursive, limit, metaFlags)
if err != nil {
return nil, false, err
// encryptMarker is a helper method for encrypting startAfter and endBefore markers
func (s *streamStore) encryptMarker(marker paths.Path, prefixKey []byte) (paths.Path, error) {
if bytes.Equal(s.rootKey, prefixKey) { // empty prefix
return encryptAfterBucket(marker, s.rootKey)
}
return marker.Encrypt(prefixKey)
}

items = make([]ListItem, len(segments))
for i, item := range segments {
newMeta, err := convertMeta(item.Meta)
if err != nil {
return nil, false, err
}
decPath, err := decryptAfterBucket(item.Path, s.rootKey)
if err != nil {
return nil, false, err
}
items[i] = ListItem{Path: decPath, Meta: newMeta, IsPrefix: item.IsPrefix}
// decryptMarker is a helper method for decrypting listed path markers
func (s *streamStore) decryptMarker(marker paths.Path, prefixKey []byte) (paths.Path, error) {
if bytes.Equal(s.rootKey, prefixKey) { // empty prefix
return decryptAfterBucket(marker, s.rootKey)
}

return items, more, nil
return marker.Decrypt(prefixKey)
}

type lazySegmentRanger struct {
Expand Down

0 comments on commit dd152f6

Please sign in to comment.