in app/helpers/RangeHeader.scala [72:92]
def fromStringHeader(str:String):Try[Seq[RangeHeader]] = {
str match {
case unitsXtractor(units:String,remainder:String)=>
if(units.toLowerCase!="bytes"){
Failure(new BadDataError("only ranges in bytes are supported"))
} else {
val remainingParts = groupSeparator.split(remainder)
val ranges = remainingParts.map(extractRange)
val failures = ranges.collect({case Failure(err)=>err})
if(failures.nonEmpty){
Failure(failures.head)
} else {
val sortedRanges = ranges.collect({case Success(range)=>range}).sortBy(_.start)
sortedRanges.foreach(h=>logger.debug(s"sorted range: $h"))
checkForOverlap(sortedRanges)
}
}
case _=>Failure(new RuntimeException(s"Could not get start and end parameters from $str"))
}
}