diff --git a/CHANGELOG.md b/CHANGELOG.md index cc564ea..2d9cb17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ * Now `SauceNaoAPI` working with synchronous queue * `SauceNaoAPI` now will wait for some time when one of limits will be achieved +### 0.4.3 + +Hotfix for serializer of `SauceNaoAnswer` + ### 0.4.2 Hotfix for autostop for some time when there is no remaining quotas for requests diff --git a/build.gradle b/build.gradle index 0e78261..1432f4c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -project.version = "0.4.2" +project.version = "0.4.3" project.group = "com.github.insanusmokrassar" buildscript { diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt index b414b13..09fb6b3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt @@ -5,6 +5,7 @@ import com.github.insanusmokrassar.SauceNaoAPI.additional.SHORT_TIME_RECALCULATI import com.github.insanusmokrassar.SauceNaoAPI.exceptions.TooManyRequestsException import com.github.insanusmokrassar.SauceNaoAPI.exceptions.sauceNaoAPIException import com.github.insanusmokrassar.SauceNaoAPI.models.SauceNaoAnswer +import com.github.insanusmokrassar.SauceNaoAPI.models.SauceNaoAnswerSerializer import com.github.insanusmokrassar.SauceNaoAPI.utils.* import com.github.insanusmokrassar.SauceNaoAPI.utils.calculateSleepTime import io.ktor.client.HttpClient @@ -122,7 +123,7 @@ data class SauceNaoAPI( logger.info(answerText) timeManager.addTimeAndClear() Json.nonstrict.parse( - SauceNaoAnswer.serializer(), + SauceNaoAnswerSerializer, answerText ) } catch (e: ClientRequestException) { diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/models/SauceNaoAnswer.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/models/SauceNaoAnswer.kt index c8e5813..f04ad16 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/models/SauceNaoAnswer.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/models/SauceNaoAnswer.kt @@ -4,11 +4,11 @@ import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer import kotlinx.serialization.json.* -@Serializable(SauceNaoAnswerSerializer::class) -data class SauceNaoAnswer( +@Serializable +data class SauceNaoAnswer internal constructor( val header: Header, val results: List = emptyList(), - val raw: JsonObject + val raw: JsonObject = JsonObject(emptyMap()) ) @Serializer(SauceNaoAnswer::class) @@ -20,10 +20,14 @@ object SauceNaoAnswerSerializer : KSerializer { override fun deserialize(decoder: Decoder): SauceNaoAnswer { val raw = JsonObjectSerializer.deserialize(decoder) - val header = serializer.fromJson(Header.serializer(), raw.getObject(headerField)) - val results = serializer.fromJson(resultsSerializer, raw.getArray(resultsField)) + val stringRaw = serializer.stringify(JsonObjectSerializer, raw) - return SauceNaoAnswer(header, results, raw) + return serializer.parse( + SauceNaoAnswer.serializer(), + stringRaw + ).copy( + raw = raw + ) } override fun serialize(encoder: Encoder, obj: SauceNaoAnswer) {