From 9b9bbefaf03d5b183d1a173ab8419ea57bbff546 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 5 Jun 2019 19:56:38 +0800 Subject: [PATCH] AdaptedAnswer and the other facade --- CHANGELOG.md | 1 + .../SauceNaoAPI/additional/AdaptedAnswer.kt | 23 +++++++++++++++++++ .../{ResultMetainfo.kt => ResultMetaInfo.kt} | 4 ++-- .../additional/results/AdaptedResult.kt | 22 ++++++++++++++++++ .../additional/results/ResultHeader.kt | 9 ++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/AdaptedAnswer.kt rename src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/{ResultMetainfo.kt => ResultMetaInfo.kt} (85%) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/AdaptedResult.kt create mode 100644 src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/ResultHeader.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0be59b2..9f5013d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # 0.3.0 * Now `results` field of `SauceNaoAnswer` is optional and is empty list by default +* Adapted structure almost completed and now can be used with raw results diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/AdaptedAnswer.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/AdaptedAnswer.kt new file mode 100644 index 0000000..08a0b83 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/AdaptedAnswer.kt @@ -0,0 +1,23 @@ +package com.github.insanusmokrassar.SauceNaoAPI.additional + +import com.github.insanusmokrassar.SauceNaoAPI.additional.header.ResultMetaInfo +import com.github.insanusmokrassar.SauceNaoAPI.additional.header.adapted +import com.github.insanusmokrassar.SauceNaoAPI.additional.results.AdaptedResult +import com.github.insanusmokrassar.SauceNaoAPI.additional.results.adapted +import com.github.insanusmokrassar.SauceNaoAPI.models.SauceNaoAnswer + +val SauceNaoAnswer.adapted: AdaptedAnswer + get() = header.adapted.let { resultMetainfo -> + val adaptedResults = results.map { + it.adapted(resultMetainfo) + } + AdaptedAnswer( + resultMetainfo, + adaptedResults + ) + } + +data class AdaptedAnswer( + val resultMetaInfo: ResultMetaInfo, + val results: List +) diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/ResultMetainfo.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/ResultMetaInfo.kt similarity index 85% rename from src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/ResultMetainfo.kt rename to src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/ResultMetaInfo.kt index 61721fc..1e77a32 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/ResultMetainfo.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/header/ResultMetaInfo.kt @@ -2,13 +2,13 @@ package com.github.insanusmokrassar.SauceNaoAPI.additional.header import com.github.insanusmokrassar.SauceNaoAPI.models.Header -data class ResultMetainfo( +data class ResultMetaInfo( val accountInfo: AccountInfo = AccountInfo(), val resultsInfo: QueryResultsMetainfo = QueryResultsMetainfo() ) val Header.adapted - get() = ResultMetainfo( + get() = ResultMetaInfo( accountInfo, queryResults ) diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/AdaptedResult.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/AdaptedResult.kt new file mode 100644 index 0000000..2c16a44 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/AdaptedResult.kt @@ -0,0 +1,22 @@ +package com.github.insanusmokrassar.SauceNaoAPI.additional.results + +import com.github.insanusmokrassar.SauceNaoAPI.additional.header.IndexInfo +import com.github.insanusmokrassar.SauceNaoAPI.additional.header.ResultMetaInfo +import com.github.insanusmokrassar.SauceNaoAPI.models.Result +import com.github.insanusmokrassar.SauceNaoAPI.models.ResultData + +fun Result.adapted( + resultMetaInfo: ResultMetaInfo +): AdaptedResult = AdaptedResult( + ResultHeader( + header.similarity, + header.thumbnail, + resultMetaInfo.resultsInfo.indexesInfo.firstOrNull { it.id == header.indexId } ?: IndexInfo(header.indexId) + ), + data +) + +data class AdaptedResult( + val resultHeader: ResultHeader, + val resultData: ResultData +) diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/ResultHeader.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/ResultHeader.kt new file mode 100644 index 0000000..96788d5 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/additional/results/ResultHeader.kt @@ -0,0 +1,9 @@ +package com.github.insanusmokrassar.SauceNaoAPI.additional.results + +import com.github.insanusmokrassar.SauceNaoAPI.additional.header.IndexInfo + +data class ResultHeader( + val similarity: Float, + val thumbnail: String, + val index: IndexInfo +)