All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.charleslzq.baiduface.client.io.BaiduResult.kt Maven / Gradle / Ivy

The newest version!
package com.github.charleslzq.baiduface.client.io

import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
import com.google.gson.reflect.TypeToken
import org.json.JSONObject

interface FromJson {
    val RESPONSE_TYPE_TOKEN: TypeToken>
    fun fromJson(gson: Gson, getter: () -> JSONObject) = fromJsonObject(gson, getter())
    fun fromJsonObject(gson: Gson, json: JSONObject) = convertJsonObject(json, convertUseGson(gson))
    fun convertJsonObject(json: JSONObject, convert: (JSONObject, TypeToken>) -> BaiduResponse) = convert(json, RESPONSE_TYPE_TOKEN)
    fun convertUseGson(gson: Gson): (JSONObject, TypeToken>) -> BaiduResponse = { json, typeToken ->
        gson.fromJson(json.toString(), typeToken.type)
    }
}

data class BaiduResponse(
        val result: D?,
        @SerializedName("log_id") val logId: String,
        @SerializedName("error_code") val errorCode: String,
        @SerializedName("error_msg") val errorMsg: String,
        val timestamp: Long
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
        fun  errResponse(errMsg: String, errCode: String = "-1") = BaiduResponse(
                result = null,
                logId = "",
                errorCode = errCode,
                errorMsg = errMsg,
                timestamp = System.currentTimeMillis()
        )
    }
}

data class DetectResult(
        @SerializedName("face_num") val count: Int,
        @SerializedName("face_list") val faceList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN = object : TypeToken>() {}
    }
}

data class SearchResult(
        @SerializedName("face_token") val faceToken: String,
        @SerializedName("user_list") val userList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class UserSearchResult(
        @SerializedName("group_id") val groupId: String,
        @SerializedName("user_id") val userId: String,
        @SerializedName("user_info") val userInfo: String,
        val score: Float
)

data class FaceOperationResult(
        @SerializedName("face_token") val faceToken: String,
        val location: FaceLocation
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class UserQueryResult(
        @SerializedName("user_list") val userList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class FaceListResult(
        @SerializedName("face_list") val faceList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class UserIdList(
        @SerializedName("user_id_list") val userIdList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class GroupIdList(
        @SerializedName("group_id_list") val groupIdList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class MatchResult(
        val score: Float,
        @SerializedName("face_list") val faceList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}

data class VerifyResult(
        @SerializedName("face_liveness") val liveness: Float,
        val thresholds: VerifyThreshold,
        @SerializedName("face_list") val faceList: List
) {
    companion object : FromJson {
        override val RESPONSE_TYPE_TOKEN: TypeToken> = object : TypeToken>() {}
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy