Skip to content

Commit d21ed64

Browse files
committed
Batching dircounts and dir images together
1 parent 512440a commit d21ed64

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

plugin/frontend/shortcode.php

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,19 @@ function render_directories( $client, $dir ) {
171171
$page_token = $response->getNextPageToken();
172172
} while ( null !== $page_token );
173173

174+
$client->getClient()->setUseBatch( true );
175+
$batch = $client->createBatch();
176+
dir_images_requests( $client, $batch, $ids );
177+
if ( $dir_counts_allowed ) {
178+
dir_counts_requests( $client, $batch, $ids );
179+
}
180+
$responses = $batch->execute();
181+
$client->getClient()->setUseBatch( false );
182+
174183
try {
175-
$dir_images = dir_images( $client, $ids );
184+
$dir_images = dir_images_responses( $responses, $ids );
176185
if ( $dir_counts_allowed ) {
177-
$dir_counts = dir_counts( $client, $ids );
186+
$dir_counts = dir_counts_responses( $responses, $ids );
178187
}
179188
} catch ( \Sgdg\Vendor\Google_Service_Exception $e ) {
180189
if ( 'userRateLimitExceeded' === $e->getErrors()[0]['reason'] ) {
@@ -198,9 +207,7 @@ function render_directories( $client, $dir ) {
198207
return $ret;
199208
}
200209

201-
function dir_images( $client, $dirs ) {
202-
$client->getClient()->setUseBatch( true );
203-
$batch = $client->createBatch();
210+
function dir_images_requests( $client, $batch, $dirs ) {
204211
$params = [
205212
'supportsTeamDrives' => true,
206213
'includeTeamDriveItems' => true,
@@ -212,14 +219,14 @@ function dir_images( $client, $dirs ) {
212219
foreach ( $dirs as $dir ) {
213220
$params['q'] = '"' . $dir . '" in parents and mimeType contains "image/" and trashed = false';
214221
$request = $client->files->listFiles( $params );
215-
$batch->add( $request, $dir );
222+
$batch->add( $request, 'img-' . $dir );
216223
}
217-
$responses = $batch->execute();
218-
$client->getClient()->setUseBatch( false );
224+
}
219225

226+
function dir_images_responses( $responses, $dirs ) {
220227
$ret = [];
221228
foreach ( $dirs as $dir ) {
222-
$response = $responses[ 'response-' . $dir ];
229+
$response = $responses[ 'response-img-' . $dir ];
223230
if ( $response instanceof \Sgdg\Vendor\Google_Service_Exception ) {
224231
throw $response;
225232
}
@@ -233,9 +240,7 @@ function dir_images( $client, $dirs ) {
233240
return $ret;
234241
}
235242

236-
function dir_counts( $client, $dirs ) {
237-
$client->getClient()->setUseBatch( true );
238-
$batch = $client->createBatch();
243+
function dir_counts_requests( $client, $batch, $dirs ) {
239244
$params = [
240245
'supportsTeamDrives' => true,
241246
'includeTeamDriveItems' => true,
@@ -246,18 +251,18 @@ function dir_counts( $client, $dirs ) {
246251
foreach ( $dirs as $dir ) {
247252
$params['q'] = '"' . $dir . '" in parents and mimeType contains "application/vnd.google-apps.folder" and trashed = false';
248253
$request = $client->files->listFiles( $params );
249-
$batch->add( $request, 'dir-' . $dir );
254+
$batch->add( $request, 'dircount-' . $dir );
250255
$params['q'] = '"' . $dir . '" in parents and mimeType contains "image/" and trashed = false';
251256
$request = $client->files->listFiles( $params );
252-
$batch->add( $request, 'img-' . $dir );
257+
$batch->add( $request, 'imgcount-' . $dir );
253258
}
254-
$responses = $batch->execute();
255-
$client->getClient()->setUseBatch( false );
259+
}
256260

261+
function dir_counts_responses( $responses, $dirs ) {
257262
$ret = [];
258263
foreach ( $dirs as $dir ) {
259-
$dir_response = $responses[ 'response-dir-' . $dir ];
260-
$img_response = $responses[ 'response-img-' . $dir ];
264+
$dir_response = $responses[ 'response-dircount-' . $dir ];
265+
$img_response = $responses[ 'response-imgcount-' . $dir ];
261266
if ( $dir_response instanceof \Sgdg\Vendor\Google_Service_Exception ) {
262267
throw $dir_response;
263268
}

0 commit comments

Comments
 (0)