diff --git a/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt b/src/main/kotlin/ru/kotlin/homework/network/NetworkLogger.kt index a5f33c5..3de20f1 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 + } + + 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>) { if (response is Failure) { @@ -30,6 +38,9 @@ class ErrorLogger { println("Error at $date: ${error.message}") } } + fun dump(): List> { + return errors.toList() + } } fun processThrowables(logger: ErrorLogger) { @@ -40,6 +51,7 @@ fun processThrowables(logger: ErrorLogger) { logger.log(Failure(IllegalArgumentException("Something unexpected"))) logger.dumpLog() + println(logger.dump().joinToString("\n")) } fun processApiErrors(apiExceptionLogger: ErrorLogger) { @@ -50,6 +62,7 @@ fun processApiErrors(apiExceptionLogger: ErrorLogger) { apiExceptionLogger.log(Failure(ApiException.NetworkException)) apiExceptionLogger.dumpLog() + println(apiExceptionLogger.dump().joinToString("\n")) } fun main() { diff --git a/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt b/src/main/kotlin/ru/kotlin/homework/network/NetworkResponse.kt index 3018c40..5dbcd26 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