AvalonS3ClientBundle.kt
package io.github.lishangbu.avalon.s3.client
import io.github.lishangbu.avalon.s3.facade.S3Facade
import io.github.lishangbu.avalon.s3.properties.S3Provider
import software.amazon.awssdk.services.s3.S3AsyncClient
import software.amazon.awssdk.services.s3.S3Client
import software.amazon.awssdk.services.s3.presigner.S3Presigner
import software.amazon.awssdk.services.s3.waiters.S3Waiter
import software.amazon.awssdk.services.s3control.S3ControlAsyncClient
import software.amazon.awssdk.services.s3control.S3ControlClient
import software.amazon.awssdk.transfer.s3.S3TransferManager
/** 命名 client 的完整能力集合。 */
class AvalonS3ClientBundle(
val name: String,
val provider: S3Provider,
val bucketAliases: Map<String, String>,
val s3Client: S3Client,
val s3AsyncClient: S3AsyncClient,
val s3Waiter: S3Waiter,
val s3Presigner: S3Presigner,
val s3ControlClient: S3ControlClient,
val s3ControlAsyncClient: S3ControlAsyncClient,
val s3TransferManager: S3TransferManager,
) {
/** 聚合 facade。 */
val facade: S3Facade =
S3Facade(
clientName = name,
provider = provider,
bucketAliases = bucketAliases,
s3Client = s3Client,
s3AsyncClient = s3AsyncClient,
s3Waiter = s3Waiter,
s3Presigner = s3Presigner,
s3ControlClient = s3ControlClient,
s3ControlAsyncClient = s3ControlAsyncClient,
s3TransferManager = s3TransferManager,
)
}