25 lines
821 B
Kotlin
25 lines
821 B
Kotlin
|
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)
|
||
|
}
|
||
|
}
|
||
|
}
|