Skip to content

Commit 3044d3c

Browse files
authored
feat: add includeFoldersAsPrefixes for managed folders (#2413)
1 parent c781bdc commit 3044d3c

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

‎src/bucket.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ export interface GetFilesOptions {
162162
autoPaginate?: boolean;
163163
delimiter?: string;
164164
endOffset?: string;
165+
includeFoldersAsPrefixes?: boolean;
165166
includeTrailingDelimiter?: boolean;
166167
prefix?: string;
167168
matchGlob?: string;
@@ -2608,6 +2609,10 @@ class Bucket extends ServiceObject<Bucket, BucketMetadata> {
26082609
* @property {string} [endOffset] Filter results to objects whose names are
26092610
* lexicographically before endOffset. If startOffset is also set, the objects
26102611
* listed have names between startOffset (inclusive) and endOffset (exclusive).
2612+
* @property {boolean} [includeFoldersAsPrefixes] If true, includes folders and
2613+
* managed folders in the set of prefixes returned by the query. Only applicable if
2614+
* delimiter is set to / and autoPaginate is set to false.
2615+
* See: https://cloud.google.com/storage/docs/managed-folders
26112616
* @property {boolean} [includeTrailingDelimiter] If true, objects that end in
26122617
* exactly one instance of delimiter have their metadata included in items[]
26132618
* in addition to the relevant part of the object name appearing in prefixes[].
@@ -2648,6 +2653,10 @@ class Bucket extends ServiceObject<Bucket, BucketMetadata> {
26482653
* @param {string} [query.endOffset] Filter results to objects whose names are
26492654
* lexicographically before endOffset. If startOffset is also set, the objects
26502655
* listed have names between startOffset (inclusive) and endOffset (exclusive).
2656+
* @param {boolean} [query.includeFoldersAsPrefixes] If true, includes folders and
2657+
* managed folders in the set of prefixes returned by the query. Only applicable if
2658+
* delimiter is set to / and autoPaginate is set to false.
2659+
* See: https://cloud.google.com/storage/docs/managed-folders
26512660
* @param {boolean} [query.includeTrailingDelimiter] If true, objects that end in
26522661
* exactly one instance of delimiter have their metadata included in items[]
26532662
* in addition to the relevant part of the object name appearing in prefixes[].

‎system-test/storage.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3124,6 +3124,20 @@ describe('storage', function () {
31243124
assert.strictEqual(files!.length, NEW_FILES.length);
31253125
});
31263126

3127+
it('returns folders as prefixes when includeFoldersAsPrefixes is set', async () => {
3128+
const expected = [`${DIRECTORY_NAME}/`];
3129+
const [, , result] = await bucket.getFiles({
3130+
delimiter: '/',
3131+
includeFoldersAsPrefixes: true,
3132+
autoPaginate: false,
3133+
});
3134+
3135+
assert.deepStrictEqual(
3136+
(result as {prefixes: string[]}).prefixes,
3137+
expected
3138+
);
3139+
});
3140+
31273141
it('should get files as a stream', done => {
31283142
let numFilesEmitted = 0;
31293143

‎test/bucket.ts‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1772,10 +1772,25 @@ describe('Bucket', () => {
17721772
it('should get files with a query', done => {
17731773
const token = 'next-page-token';
17741774
bucket.request = (reqOpts: DecorateRequestOptions) => {
1775-
assert.deepStrictEqual(reqOpts.qs, {maxResults: 5, pageToken: token});
1775+
assert.deepStrictEqual(reqOpts.qs, {
1776+
maxResults: 5,
1777+
pageToken: token,
1778+
includeFoldersAsPrefixes: true,
1779+
delimiter: '/',
1780+
autoPaginate: false,
1781+
});
17761782
done();
17771783
};
1778-
bucket.getFiles({maxResults: 5, pageToken: token}, util.noop);
1784+
bucket.getFiles(
1785+
{
1786+
maxResults: 5,
1787+
pageToken: token,
1788+
includeFoldersAsPrefixes: true,
1789+
delimiter: '/',
1790+
autoPaginate: false,
1791+
},
1792+
util.noop
1793+
);
17791794
});
17801795

17811796
it('should return nextQuery if more results exist', () => {

0 commit comments

Comments
 (0)