Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4e341c5 authored by alperozturk's avatar alperozturk Committed by Alper Öztürk
Browse files

use response key for id

parent c0d0affe
Loading
Loading
Loading
Loading
+24 −6
Original line number Diff line number Diff line
@@ -15,26 +15,44 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.lib.ocs.ServerResponse
import com.owncloud.android.lib.resources.OCSRemoteOperation
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
import org.apache.commons.httpclient.HttpStatus

class GetTaskTypesRemoteOperation : OCSRemoteOperation<TaskTypes>() {
class GetTaskTypesRemoteOperation : OCSRemoteOperation<List<TaskTypeData>>() {

    private val supportedTaskType = "Text"

    @Suppress("TooGenericExceptionCaught")
    override fun run(client: NextcloudClient): RemoteOperationResult<TaskTypes> {
        var result: RemoteOperationResult<TaskTypes>
    override fun run(client: NextcloudClient): RemoteOperationResult<List<TaskTypeData>> {
        var result: RemoteOperationResult<List<TaskTypeData>>
        var getMethod: GetMethod? = null

        try {
            getMethod =
                GetMethod(client.baseUri.toString() + DIRECT_ENDPOINT + JSON_FORMAT, true)
            val status = client.execute(getMethod)
            if (status == HttpStatus.SC_OK) {
                val taskTypes: TaskTypes? =
                val response =
                    getServerResponse(
                        getMethod,
                        object : TypeToken<ServerResponse<TaskTypes>>() {}
                    )?.ocs?.data
                    )?.ocs?.data?.types

                val taskTypeList = response?.map { (key, value) ->
                    value.copy(id = value.id ?: key)
                }

                val supportedTaskTypeList = taskTypeList?.filter { taskType ->
                    taskType.inputShape?.any { inputShape ->
                        inputShape.type == supportedTaskType
                    } == true && taskType.outputShape?.any { outputShape ->
                        outputShape.type == supportedTaskType
                    } == true
                }

                result = RemoteOperationResult(true, getMethod)
                result.setResultData(taskTypes)
                result.setResultData(supportedTaskTypeList)
            } else {
                result = RemoteOperationResult(false, getMethod)
            }
+17 −26
Original line number Diff line number Diff line
@@ -8,33 +8,24 @@

package com.owncloud.android.lib.resources.assistant.model

import com.google.gson.annotations.SerializedName
data class TaskTypes(val types:  Map<String, TaskTypeData>)

private const val generateTextId = "core:text2text"
private const val extractTopicsId = "core:text2text:topics"
private const val generateHeadlineId = "core:text2text:headline"
private const val summarizeId = "core:text2text:summary"

data class TaskTypes(val types: TaskType)

data class TaskType(
    @SerializedName(generateTextId)
    val generateText: TaskTypeData,
    @SerializedName(extractTopicsId)
    val extractTopics: TaskTypeData,
    @SerializedName(generateHeadlineId)
    val generateHeadline: TaskTypeData,
    @SerializedName(summarizeId)
    val summarize: TaskTypeData
data class TaskTypeData(
    val id: String?,
    val name: String?,
    val description: String?,
    val inputShape: List<TaskInputShape>?,
    val outputShape: List<TaskOutputShape>?
)

data class TaskTypeData(val id: String?, val name: String?, val description: String?)
data class TaskInputShape(
    val name: String?,
    val description: String?,
    val type: String?,
)

fun TaskTypes.toTaskTypeDataList(): List<TaskTypeData> {
    return listOf(
        types.generateText to generateTextId,
        types.extractTopics to extractTopicsId,
        types.generateHeadline to generateHeadlineId,
        types.summarize to summarizeId
    ).map { (taskData, id) -> taskData.copy(id = taskData.id ?: id) }
}
data class TaskOutputShape(
    val name: String?,
    val description: String?,
    val type: String?,
)