package ru.forbion.f7cloud.core.network

import okhttp3.Interceptor
import okhttp3.Response

/**
 * Единая точка обработки 401 для авторизованных запросов: бросает [UnauthorizedException]
 * (session expired → logout). Заменяет ~70 ручных `if (code == 401) throw ...` по репозиториям.
 *
 * Подключается в [NetworkFactory] при `throwOnUnauthorized = true` (по умолчанию). Login-пути
 * (проверка пароля при входе) НЕ используют этот interceptor — там 401 = «неверный пароль».
 */
object UnauthorizedInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val response = chain.proceed(chain.request())
        if (response.code == 401) {
            response.close() // не течём телом — дальше по цепочке оно не читается
            throw UnauthorizedException()
        }
        return response
    }
}
