mirror of
https://github.com/InsanusMokrassar/SauceNaoAPI.git
synced 2025-10-19 13:40:08 +00:00
upmigration
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package dev.inmo.saucenaoapi.additional
|
||||
|
||||
import dev.inmo.saucenaoapi.additional.header.ResultMetaInfo
|
||||
import dev.inmo.saucenaoapi.additional.header.adapted
|
||||
import dev.inmo.saucenaoapi.additional.results.AdaptedResult
|
||||
import dev.inmo.saucenaoapi.additional.results.adapted
|
||||
import dev.inmo.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>
|
||||
)
|
@@ -0,0 +1,11 @@
|
||||
package dev.inmo.saucenaoapi.additional
|
||||
|
||||
import com.soywiz.klock.TimeSpan
|
||||
|
||||
typealias AccountType = Int
|
||||
const val defaultAccountType: AccountType = 1 // "basic"
|
||||
|
||||
typealias UserId = Int
|
||||
|
||||
val SHORT_TIME_RECALCULATING_MILLIS = TimeSpan(30.0 * 1000)
|
||||
val LONG_TIME_RECALCULATING_MILLIS = TimeSpan(24.0 * 60 * 60 * 1000)
|
@@ -0,0 +1,43 @@
|
||||
package dev.inmo.saucenaoapi.additional.header
|
||||
|
||||
import dev.inmo.saucenaoapi.additional.*
|
||||
import dev.inmo.saucenaoapi.models.Header
|
||||
|
||||
val Header.shortLimitStatus: LimitStatus
|
||||
get() = LimitStatus(
|
||||
shortRemaining,
|
||||
shortLimit
|
||||
)
|
||||
|
||||
val Header.longLimitStatus: LimitStatus
|
||||
get() = LimitStatus(
|
||||
longRemaining,
|
||||
longLimit
|
||||
)
|
||||
|
||||
val Header.limits
|
||||
get() = Limits(shortLimitStatus, longLimitStatus)
|
||||
|
||||
val Header.accountInfo
|
||||
get() = AccountInfo(
|
||||
accountType ?: defaultAccountType,
|
||||
userId,
|
||||
limits
|
||||
)
|
||||
|
||||
|
||||
data class LimitStatus(
|
||||
val remain: Int = Int.MAX_VALUE,
|
||||
val limit: Int = Int.MAX_VALUE
|
||||
)
|
||||
|
||||
data class Limits(
|
||||
val short: LimitStatus = LimitStatus(),
|
||||
val long: LimitStatus = LimitStatus()
|
||||
)
|
||||
|
||||
data class AccountInfo(
|
||||
val accountType: AccountType = defaultAccountType,
|
||||
val userId: UserId? = null,
|
||||
val limits: Limits = Limits()
|
||||
)
|
@@ -0,0 +1,24 @@
|
||||
package dev.inmo.saucenaoapi.additional.header
|
||||
|
||||
import dev.inmo.saucenaoapi.models.Header
|
||||
|
||||
data class IndexInfo(
|
||||
val id: Int,
|
||||
val status: Int = 500,
|
||||
val results: Int = 0,
|
||||
val parent_id: Int? = null
|
||||
)
|
||||
|
||||
val Header.adaptedIndexes: List<IndexInfo>
|
||||
get() = indexes.mapNotNull {
|
||||
it ?.let { _ ->
|
||||
it.id ?.let { id ->
|
||||
IndexInfo(
|
||||
id,
|
||||
it.status ?: 500, // Serverside error if not set
|
||||
it.results ?: 0,
|
||||
it.parent_id
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,37 @@
|
||||
package dev.inmo.saucenaoapi.additional.header
|
||||
|
||||
import dev.inmo.saucenaoapi.models.Header
|
||||
|
||||
val Header.queryPreview
|
||||
get() = QueryResultPreview(
|
||||
queryImageDisplay,
|
||||
queryImage
|
||||
)
|
||||
|
||||
val Header.queryResults
|
||||
get() = QueryResultsMetainfo(
|
||||
status ?: 500, // server_side error if status field was not set up
|
||||
resultsCount ?: 0,
|
||||
minSimilarity ?: 0F,
|
||||
searchDepth ?: 128,
|
||||
queryPreview,
|
||||
adaptedIndexes
|
||||
)
|
||||
|
||||
data class QueryResultPreview(
|
||||
val imageDisplay: String? = null, // something like "userdata/uuid.png",
|
||||
val image: String? = null // something like "uuid.jpg"
|
||||
)
|
||||
|
||||
data class QueryResultsMetainfo(
|
||||
val status: Int = 0,
|
||||
val count: Int = 0,
|
||||
val minSimilarity: Float = 0F,
|
||||
val searchDepth: Int = 128,
|
||||
val preview: QueryResultPreview = QueryResultPreview(),
|
||||
val indexesInfo: List<IndexInfo> = emptyList()
|
||||
) {
|
||||
val isOk: Boolean = status == 0
|
||||
val isClientSideError = status < 0
|
||||
val isServerSideError = status > 0
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package dev.inmo.saucenaoapi.additional.header
|
||||
|
||||
import dev.inmo.saucenaoapi.models.Header
|
||||
|
||||
data class ResultMetaInfo(
|
||||
val accountInfo: AccountInfo = AccountInfo(),
|
||||
val resultsInfo: QueryResultsMetainfo = QueryResultsMetainfo()
|
||||
)
|
||||
|
||||
val Header.adapted
|
||||
get() = ResultMetaInfo(
|
||||
accountInfo,
|
||||
queryResults
|
||||
)
|
@@ -0,0 +1,22 @@
|
||||
package dev.inmo.saucenaoapi.additional.results
|
||||
|
||||
import dev.inmo.saucenaoapi.additional.header.IndexInfo
|
||||
import dev.inmo.saucenaoapi.additional.header.ResultMetaInfo
|
||||
import dev.inmo.saucenaoapi.models.Result
|
||||
import dev.inmo.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
|
||||
)
|
@@ -0,0 +1,9 @@
|
||||
package dev.inmo.saucenaoapi.additional.results
|
||||
|
||||
import dev.inmo.saucenaoapi.additional.header.IndexInfo
|
||||
|
||||
data class ResultHeader(
|
||||
val similarity: Float,
|
||||
val thumbnail: String,
|
||||
val index: IndexInfo
|
||||
)
|
Reference in New Issue
Block a user