DMITRY.
07/04/2021, 2:41 PMSourabh Rawat
07/04/2021, 4:23 PMjbnizet
07/04/2021, 4:30 PMcdpjenkins
07/04/2021, 5:22 PMDMITRY.
07/05/2021, 10:22 AMval tags = mutableSetOf<String>()
users.forEach { user: User ->
user.tags.forEach { tag: String ->
tags.add(tag)
tags.add(tag.substring(tag.lastIndexOf("/") + 1))
}
}
val sitemapMain: ByteArray = createUrlSet {
addUrl(websiteName!!)
tags.sortedBy { it }.forEach { tag: String ->
addUrl("${websiteName}/${tag}", LocalDate.now())
}
}.toString().toByteArray()
applicationEventPublisher.publishEvent(
UploadSitemapEvent(
this,
sitemapMain,
"sitemap.xml"
)
)
Event:
override fun onApplicationEvent(event: UploadSitemapEvent) {
val logger = KotlinLogging.logger {}
<http://logger.info|logger.info> { "Started uploading ${event.sitemapName} to bucket: $bucket" }
val s3Client = AmazonS3ClientBuilder.standard()
.withRegion(Regions.EU_CENTRAL_1)
.withCredentials(
AWSStaticCredentialsProvider(
BasicAWSCredentials(
access,
secret
)
)
)
.build()
val targetStream: InputStream = ByteArrayInputStream(event.sitemap)
val metadata = ObjectMetadata()
metadata.contentType = "application/xml"
val request: PutObjectRequest = PutObjectRequest(
bucket,
event.sitemapName,
targetStream,
metadata
).withCannedAcl(CannedAccessControlList.PublicRead)
s3Client.putObject(request)
<http://logger.info|logger.info> { "Finished ${event.sitemapName} uploaded to bucket: $bucket" }
}
Sourabh Rawat
07/05/2021, 10:28 AMtargetStream: InputStream
? I can be wrong, but think you need to close it.DMITRY.
07/05/2021, 10:33 AMcdpjenkins
07/05/2021, 12:05 PM