From 8adedcc31a3157518eb94c015e8f6c22cd6f1cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=90=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 18 Nov 2024 18:47:45 +0500 Subject: [PATCH 1/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE?= =?UTF-8?q?=D0=B2=20Success=20=D0=B8=20Failure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/homework/network/NetworkResponse.kt | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt b/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt index 3018c40..509e699 100644 --- a/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt +++ b/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt @@ -2,39 +2,29 @@ package ru.kotlin.homework.network -import java.lang.Exception -import java.lang.IllegalArgumentException 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 val r12: NetworkResponse = s1 -val s2 = Success("Message") -val r21: NetworkResponse = s2 -val r22: NetworkResponse = s2 - -val s3 = Success(String()) -val r31: Success = s3 -val r32: Success = s3 - val e = Failure(Error()) val er1: NetworkResponse = e val er2: NetworkResponse = e From 7c11b9b5f59416a65423ec48e6a103ff8817a8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=90=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 18 Nov 2024 18:50:42 +0500 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20ErrorLogger=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=BB=D0=BE=D0=B3=D0=B3=D0=B5?= =?UTF-8?q?=D1=80=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BB=20=D1=81=20?= =?UTF-8?q?=D0=BB=D1=8E=D0=B1=D1=8B=D0=BC=D0=B8=20=D1=82=D0=B8=D0=BF=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20dump()=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D1=81=20=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=B5=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/homework/network/NetworkLogger.kt | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 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..c91c192 100644 --- a/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt +++ b/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt @@ -2,28 +2,38 @@ package ru.kotlin.homework.network -import ru.kotlin.homework.Circle -import java.lang.IllegalArgumentException 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 + } + + data object UnknownException: ApiException("Unknown exception") { + private fun readResolve(): Any = UnknownException + } } -class ErrorLogger { +class ErrorLogger { - val errors = mutableListOf>() + private val errors = mutableListOf>() - fun log(response: NetworkResponse<*, E>) { + fun log(response: NetworkResponse<*, @UnsafeVariance E>) { if (response is Failure) { errors.add(response.responseDateTime to response.error) } } + fun dump(): List> { + return errors.toList() + } + fun dumpLog() { errors.forEach { (date, error) -> @@ -33,22 +43,12 @@ class ErrorLogger { } fun processThrowables(logger: ErrorLogger) { - logger.log(Success("Success")) - Thread.sleep(100) - logger.log(Success(Circle)) - Thread.sleep(100) logger.log(Failure(IllegalArgumentException("Something unexpected"))) - logger.dumpLog() } fun processApiErrors(apiExceptionLogger: ErrorLogger) { - apiExceptionLogger.log(Success("Success")) - Thread.sleep(100) - apiExceptionLogger.log(Success(Circle)) - Thread.sleep(100) apiExceptionLogger.log(Failure(ApiException.NetworkException)) - apiExceptionLogger.dumpLog() }