-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Decouple Bucket from storage operations #88
Comments
Wouldn't this work if we just provided a class Bucket {
...
ObjectInfo getObjectInfo(String objectName) {
// This way I can pass around a bucket, and call getObjectInfo() on it
// when I need the object.
return new ObjectInfo(bucket, objectName);
}
...
} So the code you'd write is basically Which makes me ask... don't we have this already? |
We have BucketInfo which provides metadata about a bucket but does not allow operations on it (which makes sense for a value object). This would mean adding a Bucket interface to support operations at a Bucket level. #55 describes a way in which this could be implemented but I opened this to generalize the issue. |
OK, any chance you could update the body of the issue to clarify exactly what the end result would be in a perfect world? What would the code (that I write -- as a user) ultimately look like? |
Also, there are cases where the application is just interested in the data and not the full BlobInfo e.g. to download the content it needs the data plus metadata pertinent to the response header e.g. Content-Type but not things like the Acl etc. |
Sure: public class DownloadServlet extends HttpServlet {
@Resource Bucket data;
public void doGet(HttpServletRequest request, HttpServletResponse response) {
String path = request.getPathInfo();
IOUtils.copy(data.reader(path), response.getOutputStream();
}
} Obviously there'd be some additional error handling and validation but that wouldn't affect the interface. A more serious implementation would also want more information about the object e.g. content-type, size, etag to add as response headers which would expand the interface. We could add a new one or add metadata methods to BlobReadChannel. |
I think this is part of what I am currently working on after I renamed the Bucket and Blob data models to BucketInfo and BlobInfo (as mentioned in issue #57 and described in the GCS review doc). I thought to use issue #55 for this purpose. The result would be functional (but not serializable) Bucket and Blob that have operations on them (such as Storage would be changed to return (the new functional) Bucket or Blob and accept BucketInfo or BlobInfo (or just name when content is not needed). Similarly Bucket would return Blob and accept BlobInfo. I think this would answer for issue #55 Is there more to be done for this issue? |
Functional |
🤖 I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This PR was generated using Autosynth. 🌈 Synth log will be available here: https://source.cloud.google.com/results/invocations/badf69d0-35e6-44bc-af51-7c1c8f83a086/targets
To remove unused package groupings and add "test" commit type Source-Author: Stephanie Wang <[email protected]> Source-Date: Tue Oct 20 18:31:45 2020 -0400 Source-Repo: googleapis/synthtool Source-Sha: 6abb59097be84599a1d6091fe534a49e5c5cf948 Source-Link: googleapis/synthtool@6abb590
🤖 I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- ## [1.1.0](googleapis/java-dataplex@v1.0.2...v1.1.0) (2022-08-09) ### Features * Add IAM support for Explore content APIs ([#83](googleapis/java-dataplex#83)) ([6578c05](googleapis/java-dataplex@6578c05)) * Add support for cross project for Task ([6578c05](googleapis/java-dataplex@6578c05)) * Add support for custom container for Task ([6578c05](googleapis/java-dataplex@6578c05)) * Add support for custom encryption key to be used for encrypt data on the PDs associated with the VMs in your Dataproc cluster for Task ([6578c05](googleapis/java-dataplex@6578c05)) * Add support for Latest job in Task resource ([6578c05](googleapis/java-dataplex@6578c05)) * Support logging sampled file paths per partition to Cloud logging for Discovery event ([6578c05](googleapis/java-dataplex@6578c05)) * User mode filter in Explore list sessions API ([6578c05](googleapis/java-dataplex@6578c05)) ### Dependencies * update dependency com.google.cloud:google-cloud-shared-dependencies to v3 ([#86](googleapis/java-dataplex#86)) ([8f58928](googleapis/java-dataplex@8f58928)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
…eam to v0.5.3 (#88) [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-live-stream](https://togithub.com/googleapis/java-video-live-stream) | `0.5.2` -> `0.5.3` | [![age](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-live-stream/0.5.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-live-stream/0.5.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-live-stream/0.5.3/compatibility-slim/0.5.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-live-stream/0.5.3/confidence-slim/0.5.2)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Renovate will not automatically rebase this PR, because other commits have been found. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. ⚠ **Warning**: custom changes will be lost. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/java-video-live-stream). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xOTQuMyIsInVwZGF0ZWRJblZlciI6IjMyLjE5NC4zIn0=-->
🤖 I have created a release *beep* *boop* --- ## [0.3.6](https://togithub.com/googleapis/java-bare-metal-solution/compare/v0.3.5...v0.3.6) (2022-09-30) ### Dependencies * Update dependency cachetools to v5 ([#96](https://togithub.com/googleapis/java-bare-metal-solution/issues/96)) ([b49cd41](https://togithub.com/googleapis/java-bare-metal-solution/commit/b49cd41468f79e73638439067d243acfb2498445)) * Update dependency charset-normalizer to v2.1.1 ([#82](https://togithub.com/googleapis/java-bare-metal-solution/issues/82)) ([a217d01](https://togithub.com/googleapis/java-bare-metal-solution/commit/a217d01f8b3e595b5d81277fbf5241619731d7ef)) * Update dependency click to v8.1.3 ([#83](https://togithub.com/googleapis/java-bare-metal-solution/issues/83)) ([de8165c](https://togithub.com/googleapis/java-bare-metal-solution/commit/de8165c15062de56a0fbe3802b120880d51e9ef0)) * Update dependency gcp-releasetool to v1.8.8 ([#81](https://togithub.com/googleapis/java-bare-metal-solution/issues/81)) ([d109a8a](https://togithub.com/googleapis/java-bare-metal-solution/commit/d109a8a5a25e44dc72640d79dee8d47a598f592a)) * Update dependency google-api-core to v2.10.1 ([#84](https://togithub.com/googleapis/java-bare-metal-solution/issues/84)) ([e306491](https://togithub.com/googleapis/java-bare-metal-solution/commit/e3064914cf3801071ac1e7a1bc7cd416e834e1cb)) * Update dependency google-auth to v2.12.0 ([#85](https://togithub.com/googleapis/java-bare-metal-solution/issues/85)) ([18904eb](https://togithub.com/googleapis/java-bare-metal-solution/commit/18904eb81eb09d655e209cf820f17e6e9368c6d6)) * Update dependency google-cloud-storage to v2.5.0 ([#86](https://togithub.com/googleapis/java-bare-metal-solution/issues/86)) ([492eb4c](https://togithub.com/googleapis/java-bare-metal-solution/commit/492eb4c5706fafae57976196496214bca71a2b59)) * Update dependency google-crc32c to v1.5.0 ([#87](https://togithub.com/googleapis/java-bare-metal-solution/issues/87)) ([e2e30c6](https://togithub.com/googleapis/java-bare-metal-solution/commit/e2e30c605b2406e7d2d9a620022be5d66fe15914)) * Update dependency importlib-metadata to v4.12.0 ([#88](https://togithub.com/googleapis/java-bare-metal-solution/issues/88)) ([cde53a1](https://togithub.com/googleapis/java-bare-metal-solution/commit/cde53a18210e588efd41157cfb3a3570b239e046)) * Update dependency jeepney to v0.8.0 ([#89](https://togithub.com/googleapis/java-bare-metal-solution/issues/89)) ([5b94c8d](https://togithub.com/googleapis/java-bare-metal-solution/commit/5b94c8d8854eb0c20bf8f27165b1233305af275e)) * Update dependency jinja2 to v3.1.2 ([#98](https://togithub.com/googleapis/java-bare-metal-solution/issues/98)) ([aae443c](https://togithub.com/googleapis/java-bare-metal-solution/commit/aae443c7faa299180e7461b9b0a7d847a1673734)) * Update dependency keyring to v23.9.3 ([#100](https://togithub.com/googleapis/java-bare-metal-solution/issues/100)) ([6e1ce17](https://togithub.com/googleapis/java-bare-metal-solution/commit/6e1ce171c16cd96357b170f99e84e5741e539161)) * Update dependency markupsafe to v2.1.1 ([#90](https://togithub.com/googleapis/java-bare-metal-solution/issues/90)) ([885e4a3](https://togithub.com/googleapis/java-bare-metal-solution/commit/885e4a32f39c12fce491680b3e5b667f03b4ba59)) * Update dependency protobuf to v3.20.2 ([#91](https://togithub.com/googleapis/java-bare-metal-solution/issues/91)) ([343e52d](https://togithub.com/googleapis/java-bare-metal-solution/commit/343e52d9210a107c81505607eefe674b1924af3f)) * Update dependency protobuf to v4 ([#97](https://togithub.com/googleapis/java-bare-metal-solution/issues/97)) ([b796ffa](https://togithub.com/googleapis/java-bare-metal-solution/commit/b796ffa04b8417a8f3d60325539e95d03761fa80)) * Update dependency pyjwt to v2.5.0 ([#92](https://togithub.com/googleapis/java-bare-metal-solution/issues/92)) ([11101b3](https://togithub.com/googleapis/java-bare-metal-solution/commit/11101b3bb3217695d424b6c9a3ca33a9f92cc215)) * Update dependency requests to v2.28.1 ([#93](https://togithub.com/googleapis/java-bare-metal-solution/issues/93)) ([21e7af0](https://togithub.com/googleapis/java-bare-metal-solution/commit/21e7af04c61e7694e205a3981a7ef58a838ded6f)) * Update dependency typing-extensions to v4.3.0 ([#94](https://togithub.com/googleapis/java-bare-metal-solution/issues/94)) ([46021f0](https://togithub.com/googleapis/java-bare-metal-solution/commit/46021f04973f3a7d9bff017f4c95c0d2bbb6054a)) * Update dependency zipp to v3.8.1 ([#95](https://togithub.com/googleapis/java-bare-metal-solution/issues/95)) ([169b15f](https://togithub.com/googleapis/java-bare-metal-solution/commit/169b15f74ae296b3665117ad4e22d0ae19e73862)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- ## [0.3.5](https://togithub.com/googleapis/java-video-stitcher/compare/v0.3.4...v0.3.5) (2022-10-03) ### Dependencies * Update dependency cachetools to v5 ([#92](https://togithub.com/googleapis/java-video-stitcher/issues/92)) ([b666c28](https://togithub.com/googleapis/java-video-stitcher/commit/b666c28db5c066d1e2f2ac9156bdc2e2eef519ed)) * Update dependency certifi to v2022.9.24 ([#84](https://togithub.com/googleapis/java-video-stitcher/issues/84)) ([781ee5f](https://togithub.com/googleapis/java-video-stitcher/commit/781ee5fb58ed1838f78c6287672ad7e31155d909)) * Update dependency charset-normalizer to v2.1.1 ([#89](https://togithub.com/googleapis/java-video-stitcher/issues/89)) ([eb5f4d6](https://togithub.com/googleapis/java-video-stitcher/commit/eb5f4d6f9ab2e3decc8e53f5289374149ea57e4b)) * Update dependency click to v8.1.3 ([#98](https://togithub.com/googleapis/java-video-stitcher/issues/98)) ([9e7255c](https://togithub.com/googleapis/java-video-stitcher/commit/9e7255c148cdc1d90d68c6188caeff2aee5dc087)) * Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.4 ([#105](https://togithub.com/googleapis/java-video-stitcher/issues/105)) ([65f0ddb](https://togithub.com/googleapis/java-video-stitcher/commit/65f0ddbb2f434ce398c818493eed15d3cfd0430a)) * Update dependency gcp-releasetool to v1.8.8 ([#85](https://togithub.com/googleapis/java-video-stitcher/issues/85)) ([bfe8737](https://togithub.com/googleapis/java-video-stitcher/commit/bfe87376b0afcb7ffdde0ba6e1009c8de28f1a1b)) * Update dependency google-api-core to v2.10.1 ([#99](https://togithub.com/googleapis/java-video-stitcher/issues/99)) ([02a522e](https://togithub.com/googleapis/java-video-stitcher/commit/02a522eeead4dd07ee7faf817050b327f1e30daa)) * Update dependency google-auth to v2.11.1 ([#86](https://togithub.com/googleapis/java-video-stitcher/issues/86)) ([bcb2abe](https://togithub.com/googleapis/java-video-stitcher/commit/bcb2abeacd500c774767591d045cf08482e00d09)) * Update dependency google-cloud-core to v2.3.2 ([#87](https://togithub.com/googleapis/java-video-stitcher/issues/87)) ([0ff11c5](https://togithub.com/googleapis/java-video-stitcher/commit/0ff11c54c103914e9f69238efbcd5e4ae9c04a63)) * Update dependency google-cloud-storage to v2.5.0 ([#100](https://togithub.com/googleapis/java-video-stitcher/issues/100)) ([31e1a19](https://togithub.com/googleapis/java-video-stitcher/commit/31e1a197dc19b3fd47146926fca5c017055f760f)) * Update dependency google-crc32c to v1.5.0 ([#101](https://togithub.com/googleapis/java-video-stitcher/issues/101)) ([ebaeaf5](https://togithub.com/googleapis/java-video-stitcher/commit/ebaeaf56510e89d341ceabc8459ccade9a0a34e2)) * Update dependency googleapis-common-protos to v1.56.4 ([#88](https://togithub.com/googleapis/java-video-stitcher/issues/88)) ([bf7c0a0](https://togithub.com/googleapis/java-video-stitcher/commit/bf7c0a0055db89c12ea111abaa523cea1bfbd4f5)) * Update dependency importlib-metadata to v4.12.0 ([#81](https://togithub.com/googleapis/java-video-stitcher/issues/81)) ([c3a880d](https://togithub.com/googleapis/java-video-stitcher/commit/c3a880d1b3254504ea7bfd4d4eeb61ae519150be)) * Update dependency jeepney to v0.8.0 ([#102](https://togithub.com/googleapis/java-video-stitcher/issues/102)) ([ffd462e](https://togithub.com/googleapis/java-video-stitcher/commit/ffd462ec6554bbe0aab2f0f027a62a5af7c12da2)) * Update dependency markupsafe to v2.1.1 ([#82](https://togithub.com/googleapis/java-video-stitcher/issues/82)) ([009c740](https://togithub.com/googleapis/java-video-stitcher/commit/009c74046756113ceef3531c8323f5a90e058953)) * Update dependency protobuf to v4 ([#93](https://togithub.com/googleapis/java-video-stitcher/issues/93)) ([2797c57](https://togithub.com/googleapis/java-video-stitcher/commit/2797c57434a73a65448bcb6650a8181438659ee8)) * Update dependency pyjwt to v2.5.0 ([#83](https://togithub.com/googleapis/java-video-stitcher/issues/83)) ([2914507](https://togithub.com/googleapis/java-video-stitcher/commit/291450759cad15d5b8b1bc33bb985dea8a5023b7)) * Update dependency requests to v2.28.1 ([#103](https://togithub.com/googleapis/java-video-stitcher/issues/103)) ([a232528](https://togithub.com/googleapis/java-video-stitcher/commit/a232528f7ce62b5942cd1d3e640a2732cfa9d6b3)) * Update dependency typing-extensions to v4.3.0 ([#90](https://togithub.com/googleapis/java-video-stitcher/issues/90)) ([bf0b332](https://togithub.com/googleapis/java-video-stitcher/commit/bf0b33241f03efe7f2fde7ed003bdae11a488d28)) * Update dependency zipp to v3.8.1 ([#91](https://togithub.com/googleapis/java-video-stitcher/issues/91)) ([c20df17](https://togithub.com/googleapis/java-video-stitcher/commit/c20df1751ee27110f5bb5c2ee932d0881a47da54)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- ## [0.5.3](https://togithub.com/googleapis/java-certificate-manager/compare/v0.5.2...v0.5.3) (2022-10-03) ### Dependencies * Update dependency certifi to v2022.9.24 ([#86](https://togithub.com/googleapis/java-certificate-manager/issues/86)) ([550815b](https://togithub.com/googleapis/java-certificate-manager/commit/550815b9bc63fcef0b425b4e4615871c101bf15c)) * Update dependency charset-normalizer to v2.1.1 ([#90](https://togithub.com/googleapis/java-certificate-manager/issues/90)) ([7355020](https://togithub.com/googleapis/java-certificate-manager/commit/7355020afc70724a7d65f2c86929d8d76dabf507)) * Update dependency click to v8.1.3 ([#91](https://togithub.com/googleapis/java-certificate-manager/issues/91)) ([bc8e98f](https://togithub.com/googleapis/java-certificate-manager/commit/bc8e98fa46ac40c84fc8fefcdfd0ce62e32b28de)) * Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.4 ([#111](https://togithub.com/googleapis/java-certificate-manager/issues/111)) ([3d8303a](https://togithub.com/googleapis/java-certificate-manager/commit/3d8303a5545c93fc7041e7873b02e54b470ac372)) * Update dependency gcp-releasetool to v1.8.8 ([#87](https://togithub.com/googleapis/java-certificate-manager/issues/87)) ([74a4d56](https://togithub.com/googleapis/java-certificate-manager/commit/74a4d56e9c5c7c1add65f904a079fc8e6e40b729)) * Update dependency google-api-core to v2.10.1 ([#92](https://togithub.com/googleapis/java-certificate-manager/issues/92)) ([9b10d51](https://togithub.com/googleapis/java-certificate-manager/commit/9b10d51ba1b13848f03a563b31406a0fcb50b927)) * Update dependency google-auth to v2.12.0 ([#93](https://togithub.com/googleapis/java-certificate-manager/issues/93)) ([b598fcf](https://togithub.com/googleapis/java-certificate-manager/commit/b598fcf5e35a549dc8e277c46c53184d65bd31ae)) * Update dependency google-cloud-core to v2.3.2 ([#88](https://togithub.com/googleapis/java-certificate-manager/issues/88)) ([1fdd3e4](https://togithub.com/googleapis/java-certificate-manager/commit/1fdd3e475eb287ccdabd690ddb59ea57ecab3d2d)) * Update dependency google-cloud-storage to v2.5.0 ([#94](https://togithub.com/googleapis/java-certificate-manager/issues/94)) ([3e5122a](https://togithub.com/googleapis/java-certificate-manager/commit/3e5122aadae09804343b56ffe7ae53cd7dd750ea)) * Update dependency google-crc32c to v1.5.0 ([#95](https://togithub.com/googleapis/java-certificate-manager/issues/95)) ([d5cf32e](https://togithub.com/googleapis/java-certificate-manager/commit/d5cf32ee7516dbcc3afbe303852d8d76fb7f135b)) * Update dependency googleapis-common-protos to v1.56.4 ([#89](https://togithub.com/googleapis/java-certificate-manager/issues/89)) ([62365b2](https://togithub.com/googleapis/java-certificate-manager/commit/62365b2c71cde03f6db1963a1f31cd4065d66ec3)) * Update dependency importlib-metadata to v4.12.0 ([#96](https://togithub.com/googleapis/java-certificate-manager/issues/96)) ([cf11f3f](https://togithub.com/googleapis/java-certificate-manager/commit/cf11f3fc8086c9b384f0a007f2d2a245ae19f862)) * Update dependency jeepney to v0.8.0 ([#97](https://togithub.com/googleapis/java-certificate-manager/issues/97)) ([89079be](https://togithub.com/googleapis/java-certificate-manager/commit/89079be406ac81d302253ba3ccb518216ab79862)) * Update dependency jinja2 to v3.1.2 ([#98](https://togithub.com/googleapis/java-certificate-manager/issues/98)) ([cc3e944](https://togithub.com/googleapis/java-certificate-manager/commit/cc3e944d1ee896fd0b3a8947cf1507ca5610cb84)) * Update dependency keyring to v23.9.3 ([#99](https://togithub.com/googleapis/java-certificate-manager/issues/99)) ([f0d9f0d](https://togithub.com/googleapis/java-certificate-manager/commit/f0d9f0d690fe3f98cdc157c1533a21114e922c2e)) * Update dependency markupsafe to v2.1.1 ([#100](https://togithub.com/googleapis/java-certificate-manager/issues/100)) ([c26064e](https://togithub.com/googleapis/java-certificate-manager/commit/c26064ed390bd6f992904564174e52088df1f943)) * Update dependency protobuf to v3.20.2 ([#101](https://togithub.com/googleapis/java-certificate-manager/issues/101)) ([90e1e17](https://togithub.com/googleapis/java-certificate-manager/commit/90e1e1759f8f70396212991df3a64dc52ca84c1f)) * Update dependency requests to v2.28.1 ([#103](https://togithub.com/googleapis/java-certificate-manager/issues/103)) ([c9b02cd](https://togithub.com/googleapis/java-certificate-manager/commit/c9b02cd6ede3defd151ba8343250122cf4555a86)) * Update dependency typing-extensions to v4.3.0 ([#104](https://togithub.com/googleapis/java-certificate-manager/issues/104)) ([0350c5a](https://togithub.com/googleapis/java-certificate-manager/commit/0350c5a91a753e6a4d8030318fcae35a556064d1)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
- [ ] Regenerate this pull request now. PiperOrigin-RevId: 477955264 Source-Link: https://togithub.com/googleapis/googleapis/commit/a724450af76d0001f23602684c49cd6a4b3a5654 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/4abcbcaec855e74a0b22a4988cf9e0eb61a83094 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNGFiY2JjYWVjODU1ZTc0YTBiMjJhNDk4OGNmOWUwZWI2MWE4MzA5NCJ9
🤖 I have created a release *beep* *boop* --- ## [0.2.6](https://togithub.com/googleapis/java-gke-backup/compare/v0.2.5...v0.2.6) (2022-10-05) ### Bug Fixes * update protobuf to v3.21.7 ([eb6f590](https://togithub.com/googleapis/java-gke-backup/commit/eb6f590dd59517098bdf9f867341a5606f6be066)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
Applications typically interact with resources in a single bucket (there are some exceptions). The Storage interface only provides ways to deal with global resources forcing the application to pass the bucket name around as an additional string. We should add a Bucket interface that supports common operations (CRUD, Copy, Move) within a single bucket.
For example:
The text was updated successfully, but these errors were encountered: