From e03b604a3be9a1d71a1dbfa0599dec6dec0206c7 Mon Sep 17 00:00:00 2001 From: Evgenii Balandin Date: Wed, 30 Oct 2024 01:01:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BD=D0=B5=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20Kotlin-7.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/homework/network/NetworkLogger.kt | 26 ++++++++++++++----- .../homework/network/NetworkResponse.kt | 6 ++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt b/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt index a5f33c5..6db7b0c 100644 --- a/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt +++ b/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt @@ -10,14 +10,22 @@ import java.time.LocalDateTime * Известный вам список ошибок */ sealed class ApiException(message: String) : Throwable(message) { - data object NotAuthorized : ApiException("Not authorized") - data object NetworkException : ApiException("Not connected") - data object UnknownException: ApiException("Unknown exception") -} + data object NotAuthorized : ApiException("Not authorized") { + private fun readResolve(): Any = NotAuthorized + } + + data object NetworkException : ApiException("Not connected") { + private fun readResolve(): Any = NetworkException + } -class ErrorLogger { + data object UnknownException: ApiException("Unknown exception") { + private fun readResolve(): Any = UnknownException + } +} - val errors = mutableListOf>() +class ErrorLogger +{ + private val errors = mutableListOf>() fun log(response: NetworkResponse<*, E>) { if (response is Failure) { @@ -30,6 +38,9 @@ class ErrorLogger { println("Error at $date: ${error.message}") } } + + // Метод dump для получения списка накопленных ошибок + fun dump(): List> = errors } fun processThrowables(logger: ErrorLogger) { @@ -42,7 +53,8 @@ fun processThrowables(logger: ErrorLogger) { logger.dumpLog() } -fun processApiErrors(apiExceptionLogger: ErrorLogger) { +fun processApiErrors(apiExceptionLogger: ErrorLogger) { + apiExceptionLogger.log(Success("Success")) Thread.sleep(100) apiExceptionLogger.log(Success(Circle)) diff --git a/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt b/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt index 3018c40..45d7641 100644 --- a/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt +++ b/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt @@ -9,19 +9,19 @@ import java.time.LocalDateTime /** * Network result */ -sealed class NetworkResponse { +sealed class NetworkResponse { val responseDateTime: LocalDateTime = LocalDateTime.now() } /** * Network success */ -data class Success(val resp: T): NetworkResponse() +data class Success(val resp: T): NetworkResponse() /** * Network error */ -data class Failure(val error: R): NetworkResponse() +data class Failure(val error: R): NetworkResponse() val s1 = Success("Message") val r11: NetworkResponse = s1