in s3/src/main/scala/org/apache/pekko/stream/connectors/s3/javadsl/S3.scala [156:342]
def deleteObject(bucket: String, key: String): Source[Done, NotUsed] =
deleteObject(bucket, key, Optional.empty(), S3Headers.empty)
/**
* Deletes a S3 Object
*
* @param bucket the s3 bucket name
* @param key the s3 object key
* @param versionId optional version id of the object
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObject(bucket: String, key: String, versionId: Optional[String]): Source[Done, NotUsed] =
deleteObject(bucket, key, versionId, S3Headers.empty)
/**
* Deletes a S3 Object
*
* @param bucket the s3 bucket name
* @param key the s3 object key
* @param versionId optional version id of the object
* @param s3Headers any headers you want to add
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObject(bucket: String,
key: String,
versionId: Optional[String],
s3Headers: S3Headers): Source[Done, NotUsed] =
S3Stream
.deleteObject(S3Location(bucket, key), Option(versionId.orElse(null)), s3Headers)
.map(_ => Done.getInstance())
.asJava
/**
* Deletes all keys under the specified bucket
*
* @param bucket the s3 bucket name
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObjectsByPrefix(bucket: String): Source[Done, NotUsed] =
deleteObjectsByPrefix(bucket, Optional.empty(), deleteAllVersions = false, S3Headers.empty)
/**
* Deletes all keys under the specified bucket
*
* @param bucket the s3 bucket name
* @param deleteAllVersions Whether to delete all object versions as well (applies to versioned buckets)
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObjectsByPrefix(bucket: String, deleteAllVersions: Boolean): Source[Done, NotUsed] =
deleteObjectsByPrefix(bucket, Optional.empty(), deleteAllVersions, S3Headers.empty)
/**
* Deletes all keys which have the given prefix under the specified bucket
*
* @param bucket the s3 bucket name
* @param prefix optional s3 objects prefix
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObjectsByPrefix(bucket: String, prefix: Optional[String]): Source[Done, NotUsed] =
deleteObjectsByPrefix(bucket, prefix, S3Headers.empty)
/**
* Deletes all keys which have the given prefix under the specified bucket
*
* @param bucket the s3 bucket name
* @param prefix optional s3 objects prefix
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObjectsByPrefix(bucket: String,
prefix: Optional[String],
deleteAllVersions: Boolean): Source[Done, NotUsed] =
deleteObjectsByPrefix(bucket, prefix, deleteAllVersions, S3Headers.empty)
/**
* Deletes all keys which have the given prefix under the specified bucket
*
* @param bucket the s3 bucket name
* @param prefix optional s3 objects prefix
* @param s3Headers any headers you want to add
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObjectsByPrefix(bucket: String, prefix: Optional[String], s3Headers: S3Headers): Source[Done, NotUsed] =
S3.deleteObjectsByPrefix(bucket, prefix, deleteAllVersions = false, s3Headers)
/**
* Deletes all keys which have the given prefix under the specified bucket
*
* @param bucket the s3 bucket name
* @param prefix optional s3 objects prefix
* @param s3Headers any headers you want to add
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteObjectsByPrefix(bucket: String,
prefix: Optional[String],
deleteAllVersions: Boolean,
s3Headers: S3Headers): Source[Done, NotUsed] =
S3Stream
.deleteObjectsByPrefix(bucket, Option(prefix.orElse(null)), deleteAllVersions, s3Headers)
.map(_ => Done.getInstance())
.asJava
/**
* Deletes all S3 Objects within the given bucket
*
* @param bucket the s3 bucket name
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteBucketContents(bucket: String): Source[Done, NotUsed] =
S3.deleteBucketContents(bucket, deleteAllVersions = false)
/**
* Deletes all S3 Objects within the given bucket
*
* @param bucket the s3 bucket name
* @param deleteAllVersions Whether to delete all object versions as well (applies to versioned buckets)
* @return A [[pekko.stream.javadsl.Source Source]] that will emit [[pekko.Done]] when operation is completed
*/
def deleteBucketContents(bucket: String, deleteAllVersions: Boolean): Source[Done, NotUsed] =
S3Stream
.deleteObjectsByPrefix(bucket, None, deleteAllVersions, S3Headers.empty)
.map(_ => Done.getInstance())
.asJava
/**
* Uploads a S3 Object, use this for small files and [[multipartUpload]] for bigger ones
*
* @param bucket the s3 bucket name
* @param key the s3 object key
* @param data a [[pekko.stream.javadsl.Source Source]] of [[pekko.util.ByteString ByteString]]
* @param contentLength the number of bytes that will be uploaded (required!)
* @param contentType an optional [[pekko.http.javadsl.model.ContentType ContentType]]
* @param s3Headers any additional headers for the request
* @return a [[pekko.stream.javadsl.Source Source]] containing the [[ObjectMetadata]] of the uploaded S3 Object
*/
def putObject(bucket: String,
key: String,
data: Source[ByteString, _],
contentLength: Long,
contentType: ContentType,
s3Headers: S3Headers): Source[ObjectMetadata, NotUsed] =
S3Stream
.putObject(S3Location(bucket, key),
contentType.asInstanceOf[ScalaContentType],
data.asScala,
contentLength,
s3Headers)
.asJava
/**
* Uploads a S3 Object, use this for small files and [[multipartUpload]] for bigger ones
*
* @param bucket the s3 bucket name
* @param key the s3 object key
* @param data a [[pekko.stream.javadsl.Source Source]] of [[pekko.util.ByteString ByteString]]
* @param contentLength the number of bytes that will be uploaded (required!)
* @param contentType an optional [[pekko.http.javadsl.model.ContentType ContentType]]
* @return a [[pekko.stream.javadsl.Source Source]] containing the [[ObjectMetadata]] of the uploaded S3 Object
*/
def putObject(bucket: String,
key: String,
data: Source[ByteString, _],
contentLength: Long,
contentType: ContentType): Source[ObjectMetadata, NotUsed] =
putObject(bucket, key, data, contentLength, contentType, S3Headers.empty.withCannedAcl(CannedAcl.Private))
/**
* Uploads a S3 Object, use this for small files and [[multipartUpload]] for bigger ones
*
* @param bucket the s3 bucket name
* @param key the s3 object key
* @param data a [[pekko.stream.javadsl.Source Source]] of [[pekko.util.ByteString ByteString]]
* @param contentLength the number of bytes that will be uploaded (required!)
* @return a [[pekko.stream.javadsl.Source Source]] containing the [[ObjectMetadata]] of the uploaded S3 Object
*/
def putObject(bucket: String,
key: String,
data: Source[ByteString, _],
contentLength: Long): Source[ObjectMetadata, NotUsed] =
putObject(bucket, key, data, contentLength, ContentTypes.APPLICATION_OCTET_STREAM)
private def toJava[M](
download: pekko.stream.scaladsl.Source[Option[
(pekko.stream.scaladsl.Source[ByteString, M], ObjectMetadata)], NotUsed])
: Source[Optional[JPair[Source[ByteString, M], ObjectMetadata]], NotUsed] =
download.map {
_.map { case (stream, meta) => JPair(stream.asJava, meta) }.toJava
}.asJava