in ktor-http/common/src/io/ktor/http/Ranges.kt [59:83]
public fun parseRangesSpecifier(rangeSpec: String): RangesSpecifier? {
try {
val (unit, allRangesString) = rangeSpec.chomp("=") { return null }
val allRanges = allRangesString.split(',').map {
if (it.startsWith("-")) {
ContentRange.Suffix(it.removePrefix("-").toLong())
} else {
val (from, to) = it.chomp("-") { "" to "" }
when {
to.isNotEmpty() -> ContentRange.Bounded(from.toLong(), to.toLong())
else -> ContentRange.TailFrom(from.toLong())
}
}
}
if (allRanges.isEmpty() || unit.isEmpty()) {
return null
}
val spec = RangesSpecifier(unit, allRanges)
return if (spec.isValid()) spec else null
} catch (e: Throwable) {
return null // according to the specification we should ignore syntactically incorrect headers
}
}