Ability to get ID/hidden status
I am trying to get all old versions.
.List() with b2.ListHidden() lists both current and old versions.
Now I thought I could just subtract a list of current files from a list of file versions, but the ID doesn't seem to be exposed. When I get them from iterator.Object(), the old versions look identical to the current versions, so I have no way of detecting which is the most current one (apart from sorting by LastModified, which is tricky because it has limited resolution).
It would be easy enough to expose an object's ID, but honestly running two lists and subtracting IDs to find hidden objects isn't great.
Another option would be to expose hidden status in attrs, but I can't remember off the top of my head if I can easily do that without excessive round trips.
I think it's not even possible with round trips. The information whether a version is the newest one is not in the b2_list_file_versions response and not even in the b2_get_file_info response.
So comparing with the b2_list_file_names response seems to be the way to go - if you have the need to get old versions (a requirement probably not too common). But you would need the IDs to do that.
I'm using a version of the B2 client (written in perl) and I'm moving some part of the system to go, and using this module to write the files to B2.
Currently on the perl code, for each upload I saved on the database the filename and the file ID, so on delete I could run with one request per delete. As I'm doing this for a few thousand files each day, this can make a difference, but now with the S3 API, I will migrate delete to using S3 layer, where it accept just the filename.
I prefer to keep uploading using the 'native' api because it's design is better than the S3 layer, there's was some times where the S3 layer was down but the native were up, but deletes can wait if the S3 layer is dow.
Awesome module, by the way! Thanks for making it public.
I've included the ID after uploads - https://github.com/kurin/blazer/pull/78
Using the S3 API for delete do work, however, the file is not really deleted until the next day (even with the "Keep only last version" enable), so you may end up paying between 1 and 47 hours of a file that have been removed from the point of the view of the application