File tree Expand file tree Collapse file tree 5 files changed +47
-11
lines changed Expand file tree Collapse file tree 5 files changed +47
-11
lines changed Original file line number Diff line number Diff line change 5959 matrix :
6060 # Add macos-latest and/or windows-latest if relevant for this package.
6161 os : [ubuntu-latest]
62- sdk : [2.19 .0, dev]
62+ sdk : [3.0 .0, dev]
6363 steps :
6464 - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
6565 - uses : dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672
Original file line number Diff line number Diff line change 11## 0.8.16-wip
22
3+ - ** Breaking** ` BucketEntry ` is now ` sealed ` anyone implementing or subclassing
4+ will experience breakage.
5+ - Feature ` BucketEntry ` objects returns from ` Bucket.list ` are now instances
6+ of:
7+ * ` BucketDirectoryEntry ` , or,
8+ * ` BucketObjectEntry ` , which implements ` ObjectInfo ` exposing metadata.
9+
10+ This means that anyone using ` Bucket.list ` to find objects, does not need
11+ to use ` Bucket.info ` to fetch metadata for an object.
12+ - Minimum Dart SDK constraint bumped to ` ^3.0.0 ` .
13+
314## 0.8.15
415
516- Update the pubspec repository field to reflect the repo move.
Original file line number Diff line number Diff line change @@ -349,9 +349,9 @@ class _ObjectPageImpl implements Page<BucketEntry> {
349349 storage_api.Objects response)
350350 : items = [
351351 for (final item in response.prefixes ?? const < String > [])
352- BucketEntry . _directory (item),
352+ BucketDirectoryEntry ._ (item),
353353 for (final item in response.items ?? const < storage_api.Object > [])
354- BucketEntry . _object (item.name ! )
354+ _BucketObjectEntry (item)
355355 ],
356356 _nextPageToken = response.nextPageToken;
357357
@@ -430,6 +430,16 @@ class _ObjectInfoImpl implements ObjectInfo {
430430 ObjectMetadata get metadata => _metadata;
431431}
432432
433+ class _BucketObjectEntry extends _ObjectInfoImpl implements BucketObjectEntry {
434+ _BucketObjectEntry (storage_api.Object object) : super (object);
435+
436+ @override
437+ bool get isDirectory => false ;
438+
439+ @override
440+ bool get isObject => true ;
441+ }
442+
433443class _ObjectMetadata implements ObjectMetadata {
434444 final storage_api.Object _object;
435445 Acl ? _cachedAcl;
Original file line number Diff line number Diff line change @@ -668,23 +668,38 @@ abstract class ObjectMetadata {
668668/// Listing operate like a directory listing, despite the object
669669/// namespace being flat.
670670///
671+ /// Instances of [BucketEntry] are either instances of [BucketDirectoryEntry]
672+ /// or [BucketObjectEntry] . Casting to [BucketObjectEntry] will give access to
673+ /// object metadata.
674+ ///
671675/// See [Bucket.list] for information on how the hierarchical structure
672676/// is determined.
673- class BucketEntry {
677+ sealed class BucketEntry {
674678 /// Whether this is information on an object.
675- final bool isObject;
679+ bool get isObject;
676680
677681 /// Name of object or directory.
678- final String name;
679-
680- BucketEntry ._object (this .name) : isObject = true ;
681-
682- BucketEntry ._directory (this .name) : isObject = false ;
682+ String get name;
683683
684684 /// Whether this is a prefix.
685685 bool get isDirectory => ! isObject;
686686}
687687
688+ /// Entry in [Bucket.list] representing a directory given the `delimiter`
689+ /// passed.
690+ class BucketDirectoryEntry extends BucketEntry {
691+ @override
692+ final String name;
693+
694+ BucketDirectoryEntry ._(this .name);
695+
696+ @override
697+ bool get isObject => false ;
698+ }
699+
700+ /// Entry in [Bucket.list] representing an object.
701+ abstract class BucketObjectEntry implements BucketEntry , ObjectInfo {}
702+
688703/// Access to operations on a specific cloud storage bucket.
689704abstract class Bucket {
690705 /// Name of this bucket.
Original file line number Diff line number Diff line change 99 - gcp
1010
1111environment :
12- sdk : ' >=2.19.0 <4 .0.0'
12+ sdk : ' ^3 .0.0'
1313
1414dependencies :
1515 _discoveryapis_commons : ^1.0.0
You can’t perform that action at this time.
0 commit comments