in app/controllers/Application.scala [109:131]
def getStreamingSource(ranges:Seq[RangeHeader], userInfo:UserInfo, omEntry:ObjectMatrixEntry, auditFile:AuditFile, uid:String) = Try {
import akka.stream.scaladsl.GraphDSL.Implicits._
val partialGraph = if(ranges.length>1) {
val mpSep = MultipartSource.genSeparatorText
val rangesAndSources = MultipartSource.makeSources(ranges, userInfo, omEntry)
GraphDSL.create() { implicit builder =>
val src = builder.add(MultipartSource.getSource(rangesAndSources, omEntry.fileAttribues.get.size, "application/octet-stream", mpSep))
val audit = builder.add(new AuditLogFinish(auditActor,auditFile,uid, omEntry.fileAttribues.get.size))
src ~> audit
SourceShape(audit.out)
}
} else {
GraphDSL.create() { implicit builder=>
val src = builder.add(new MatrixStoreFileSourceWithRanges(userInfo,omEntry.oid,omEntry.fileAttribues.get.size,ranges))
val audit = builder.add(new AuditLogFinish(auditActor,auditFile,uid, omEntry.fileAttribues.get.size))
src ~> audit
SourceShape(audit.out)
}
}
Source.fromGraph(partialGraph)
}