summaryrefslogtreecommitdiff
path: root/plugins/shotwell-publishing/PhotosPublisher.vala
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2021-08-22 09:58:25 +0200
committerJörg Frings-Fürst <debian@jff.email>2021-08-22 09:58:25 +0200
commit55d274a13c2524d55e07f2395316aa9d2cae912b (patch)
treeed56dbd62e0ce978ab83e8ffe2d6034e612d028f /plugins/shotwell-publishing/PhotosPublisher.vala
parentfa96deefd4bc785c2937e40df3eb0742e2353c13 (diff)
parent63876b56fcba61ef061c5f0edd924551bc079354 (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.vala52
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();
+ }
}
}