app/controllers/ObjectMatrixEntryMixin.scala (19 lines of code) (raw):
package controllers
import helpers.{MetadataHelper, RangeHeader}
import models.ObjectMatrixEntry
import org.slf4j.Logger
import scala.util.Try
trait ObjectMatrixEntryMixin {
protected val logger:Logger
/**
* gathers appropriate headers for the given [[ObjectMatrixEntry]]
* @param entry [[ObjectMatrixEntry]] instance
* @return
*/
def headersForEntry(entry:ObjectMatrixEntry, ranges:Seq[RangeHeader], totalSize:Option[Long]):Map[String,String] = {
logger.info(entry.attributes.toString)
val contentRangeHeader = ranges.headOption.map(range=>s"bytes ${range.headerString}${totalSize.map(s=>s"/$s").getOrElse("")}")
val optionalFields = Seq(
contentRangeHeader.map(hdr=>"Content-Range"->hdr),
entry.attributes.flatMap(_.stringValues.get("MXFS_FILENAME")).map(filename=>"Content-Disposition"->s"filename=${java.net.URLEncoder.encode(filename, "utf-8")}")
).collect({case Some(field)=>field})
optionalFields.toMap ++ Map(
"Accept-Ranges"->"bytes",
)
}
}