in app/helpers/RangeHeader.scala [18:39]
protected def extractRange(rangePart:String):Try[RangeHeader] = rangePart match {
case fullRangeXtractor(startStr:String, endStr:String)=>
val hdr = new RangeHeader(Some(startStr.toLong), Some(endStr.toLong))
if(hdr.start.get>hdr.end.get){
Failure(new BadDataError("range start must be earlier than range end"))
} else {
Success(hdr)
}
case partialStartRangeXtractor(startStr:String)=>
val startNum = startStr.toLong
val hdr = new RangeHeader(Some(startNum), None)
Success(hdr)
case partialEndRangeXtractor(endStr:String)=>
val endNum = endStr.toLong
if(endNum>0){
Success(new RangeHeader(None, Some(endNum)))
} else {
Failure(new BadDataError("range end must be a positive integer"))
}
case _=>
Failure(new BadDataError(s"incorrect range format '$rangePart'"))
}