durch / rust-s3

Rust library for interfacing with S3 API compatible services
MIT License
498 stars 195 forks source link

Checking for object existence #373

Open Palladinium opened 6 months ago

Palladinium commented 6 months ago

Is your feature request related to a problem? Please describe. There is currently no way to check whether an object exists in a bucket. The README has a link to an exists function, but the method doesn't actually exist: https://github.com/durch/rust-s3/blob/5105a1bff57827f88fb90840f03193665ea34d68/README.md?plain=1#L77

Describe the solution you'd like Adding an exists method to the Bucket API.

Describe alternatives you've considered I've tried using get_object or head_object and checking for the error variant, but I have no idea which S3Error variant is returned when the object doesn't exist vs when anything else goes wrong with fetching the object's data.

Palladinium commented 6 months ago

It looks like the error value returned when an object doesn't exist is S3Error::Http(404, _). It'd still be nice to get this as its own feature. Note that without the ListBucket permission, you will always get a 403 instead, and you tell whether an object doesn't exist or you just can't access it - this is by design in S3's API.