1import * as Layer from "effect/Layer";
2import { makeStorageBucketBinding } from "./BucketHttp.ts";
3import { ReadWriteBucket } from "./ReadWriteBucket.ts";
4
5/**
6 * HTTP implementation of {@link ReadWriteBucket} over the Cloud Storage JSON API.
7 *
8 * @layer
9 * @provides GCP.Storage.ReadWriteBucket
10 * @category Storage
11 */
12export const ReadWriteBucketHttp = Layer.effect(
13 ReadWriteBucket,
14 makeStorageBucketBinding({
15 tag: "GCP.Storage.ReadWriteBucket",
16 role: "roles/storage.objectUser",
17 makeClient: (helpers, name) => ({
18 ...helpers.makeRead(name),
19 ...helpers.makeWrite(name),
20 }),
21 }),
22);