def fromStringHeader()

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"))
    }
  }