diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2021-08-22 09:58:25 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2021-08-22 09:58:25 +0200 |
commit | 55d274a13c2524d55e07f2395316aa9d2cae912b (patch) | |
tree | ed56dbd62e0ce978ab83e8ffe2d6034e612d028f /plugins/shotwell-publishing/PhotosPublisher.vala | |
parent | fa96deefd4bc785c2937e40df3eb0742e2353c13 (diff) | |
parent | 63876b56fcba61ef061c5f0edd924551bc079354 (diff) |
Merge branch 'release/debian/0.30.14-1'debian/0.30.14-1
Diffstat (limited to 'plugins/shotwell-publishing/PhotosPublisher.vala')
-rw-r--r-- | plugins/shotwell-publishing/PhotosPublisher.vala | 52 |
1 files changed, 33 insertions, 19 deletions
diff --git a/plugins/shotwell-publishing/PhotosPublisher.vala b/plugins/shotwell-publishing/PhotosPublisher.vala index 5f46470..e1127ac 100644 --- a/plugins/shotwell-publishing/PhotosPublisher.vala +++ b/plugins/shotwell-publishing/PhotosPublisher.vala @@ -7,6 +7,7 @@ namespace Publishing.GooglePhotos { internal const string DEFAULT_ALBUM_NAME = N_("Shotwell Connect"); +internal const int MAX_BATCH_SIZE = 50; internal class Album { public string name; @@ -127,28 +128,41 @@ private class MediaCreationTransaction : Publishing.RESTSupport.GooglePublisher. } public override void execute () throws Spit.Publishing.PublishingError { - var builder = new Json.Builder(); - builder.begin_object(); - builder.set_member_name("albumId"); - builder.add_string_value(this.album_id); - builder.set_member_name("newMediaItems"); - builder.begin_array(); - for (var i = 0; i < this.upload_tokens.length; i++) { - builder.begin_object(); - builder.set_member_name("description"); - builder.add_string_value(this.titles[i]); - builder.set_member_name("simpleMediaItem"); + for (var h = 0; h * MAX_BATCH_SIZE < this.upload_tokens.length; h++) { + var offset = h * MAX_BATCH_SIZE; + var difference = this.upload_tokens.length - offset; + int end; + + if (difference > MAX_BATCH_SIZE) { + end = offset + MAX_BATCH_SIZE; + } + else { + end = offset + difference; + } + + var builder = new Json.Builder(); builder.begin_object(); - builder.set_member_name("uploadToken"); - builder.add_string_value(this.upload_tokens[i]); - builder.end_object(); + builder.set_member_name("albumId"); + builder.add_string_value(this.album_id); + builder.set_member_name("newMediaItems"); + builder.begin_array(); + for (var i = offset; i < end; i++) { + builder.begin_object(); + builder.set_member_name("description"); + builder.add_string_value(this.titles[i]); + builder.set_member_name("simpleMediaItem"); + builder.begin_object(); + builder.set_member_name("uploadToken"); + builder.add_string_value(this.upload_tokens[i]); + builder.end_object(); + builder.end_object(); + } + builder.end_array(); builder.end_object(); - } - builder.end_array(); - builder.end_object(); - set_custom_payload(Json.to_string (builder.get_root (), false), "application/json"); + set_custom_payload(Json.to_string (builder.get_root (), false), "application/json"); - base.execute(); + base.execute(); + } } } |