AdaptedAnswer and the other facade

This commit is contained in:
InsanusMokrassar 2019-06-05 19:56:38 +08:00
parent 6925e309eb
commit 9b9bbefaf0
5 changed files with 57 additions and 2 deletions

View File

@ -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

View File

@ -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<AdaptedResult>
)

View File

@ -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
)

View File

@ -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
)

View File

@ -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
)