Improve TooManyRequestExceptions

Koitharu 2 years ago
parent d937c7e6ab
commit 939b6b1e46
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -2,25 +2,30 @@ package org.koitharu.kotatsu.parsers.exception
import okio.IOException import okio.IOException
import java.time.Instant import java.time.Instant
import java.time.temporal.ChronoUnit
class TooManyRequestExceptions( class TooManyRequestExceptions(
val url: String, val url: String,
val retryAfter: Long, retryAfter: Long,
) : IOException( ) : IOException("Too man requests") {
buildString {
append("Too man requests") val retryAt: Instant? = if (retryAfter > 0 && retryAfter < Long.MAX_VALUE) {
if (retryAfter > 0) { Instant.now().plusMillis(retryAfter)
append(", retry after ") } else {
append(retryAfter) null
append("ms") }
fun getRetryDelay(): Long {
if (retryAt == null) {
return -1L
} }
}, return Instant.now().until(retryAt, ChronoUnit.MILLIS).coerceAtLeast(0L)
) { }
val retryAt: Instant? override val message: String?
get() = if (retryAfter > 0 && retryAfter < Long.MAX_VALUE) { get() = if (retryAt != null) {
Instant.now().plusMillis(retryAfter) "${super.message}, retry at $retryAt"
} else { } else {
null super.message
} }
} }

Loading…
Cancel
Save