in app/services/FileMove/ImprovedLargeFileCopier.scala [84:108]
def apply(bucket:String, key:String, version:Option[String], headers:Seq[HttpHeader], entityContentType:ContentType, entityContentLength:Option[Long]) = {
def updateHeadInfo(existing:HeadInfo, nextHeader:HttpHeader) = (nextHeader.name(): @switch) match {
case "Last-Modified"=>existing.copy(lastModified=nextHeader.value())
case "Content-Length"=>existing.copy(contentLength=Try { nextHeader.value().toLong}.toOption.getOrElse(-1L))
case "ETag"=>existing.copy(eTag=Some(nextHeader.value()))
case "Content-Type"=>existing.copy(contentType=nextHeader.value())
case "Content-Encoding"=>existing.copy(contentEncoding=Some(nextHeader.value()))
case "Content-Language"=>existing.copy(contentLanguage=Some(nextHeader.value()))
case _=>existing
}
val initial = new HeadInfo(bucket, key, version, "", -1L, None, "", None,None)
val fromHeaders = headers.foldLeft(initial)((acc,elem)=>updateHeadInfo(acc, elem))
val withContentType = if(fromHeaders.contentType=="") {
fromHeaders.copy(contentType = entityContentType.toString())
} else {
fromHeaders
}
if(withContentType.contentLength == -1L && entityContentLength.isDefined) {
withContentType.copy(contentLength = entityContentLength.get)
} else {
withContentType
}
}