image-loader/app/model/S3IngestObject.scala (29 lines of code) (raw):
package model
import com.gu.mediaservice.lib.logging.LogMarker
import lib.storage.ImageLoaderStore
import scala.jdk.CollectionConverters._
case class S3IngestObject (
key: String,
uploadedBy: String,
filename:String,
maybeMediaIdFromUiUpload: Option[String],
uploadTime: java.util.Date,
contentLength: Long,
getInputStream: () => java.io.InputStream
)
object S3IngestObject {
def apply (key: String, store: ImageLoaderStore)(implicit logMarker: LogMarker): S3IngestObject = {
val keyParts = key.split("/")
val s3Object = store.getS3Object(key)
val metadata = s3Object.getObjectMetadata
S3IngestObject(
key,
uploadedBy = keyParts.head,
filename = keyParts.last,
maybeMediaIdFromUiUpload = metadata.getUserMetadata.asScala.get("media-id"), // set by the client in upload in manager.js
uploadTime = metadata.getLastModified,
contentLength = metadata.getContentLength,
getInputStream = () => s3Object.getObjectContent
)
}
}