ultrasonic-app-subsonic-and.../subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/RangeHeaderInterceptor.kt

25 lines
821 B
Kotlin
Raw Normal View History

package org.moire.ultrasonic.api.subsonic.interceptors
import okhttp3.Interceptor
import okhttp3.Interceptor.Chain
import okhttp3.Response
/**
* Modifies request "Range" header to be according to HTTP standard.
*
* See [range rfc](https://tools.ietf.org/html/rfc7233).
*/
internal class RangeHeaderInterceptor : Interceptor {
override fun intercept(chain: Chain): Response {
val originalRequest = chain.request()
val headers = originalRequest.headers()
return if (headers.names().contains("Range")) {
val offset = "bytes=${headers["Range"]}-"
chain.proceed(originalRequest.newBuilder()
.removeHeader("Range").addHeader("Range", offset)
.build())
} else {
chain.proceed(originalRequest)
}
}
}