1import * as S3 from "@distilled.cloud/aws/s3";
2import * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Bucket } from "./Bucket.ts";
5
6export interface CompleteMultipartUploadRequest extends Omit<
7 S3.CompleteMultipartUploadRequest,
8 "Bucket"
9> {}
10
11/**
12 * Runtime binding for `s3:CompleteMultipartUpload`.
13 *
14 * Assembles the parts uploaded with `UploadPart` into the final object. The
15 * part list must be in ascending `PartNumber` order with the `ETag` each
16 * `UploadPart` call returned. Provide the implementation with
17 * `Effect.provide(AWS.S3.CompleteMultipartUploadHttp)`.
18 * ### Multipart Uploads
19 * **Example:** Complete a Multipart Upload
20 * ```typescript
21 * // init — bind the operation to the bucket
22 * const completeUpload = yield* AWS.S3.CompleteMultipartUpload(bucket);
23 *
24 * // runtime — parts collected from each AWS.S3.UploadPart call
25 * yield* completeUpload({
26 * Key: "backups/archive.tar",
27 * UploadId,
28 * MultipartUpload: {
29 * Parts: [
30 * { ETag: part1.ETag, PartNumber: 1 },
31 * { ETag: part2.ETag, PartNumber: 2 },
32 * ],
33 * },
34 * });
35 * ```
36 *
37 * @binding
38 */
39export interface CompleteMultipartUpload extends Binding.Service<
40 CompleteMultipartUpload,
41 "AWS.S3.CompleteMultipartUpload",
42 (
43 bucket: Bucket,
44 ) => Effect.Effect<
45 (
46 request: CompleteMultipartUploadRequest,
47 ) => Effect.Effect<
48 S3.CompleteMultipartUploadOutput,
49 S3.CompleteMultipartUploadError
50 >
51 >
52> {}
53
54export const CompleteMultipartUpload = Binding.Service<CompleteMultipartUpload>(
55 "AWS.S3.CompleteMultipartUpload",
56);