Loading library/src/main/java/com/owncloud/android/lib/resources/assistant/GetTaskTypesRemoteOperation.kt +24 −6 Original line number Diff line number Diff line Loading @@ -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) } Loading library/src/main/java/com/owncloud/android/lib/resources/assistant/model/TaskTypes.kt +17 −26 Original line number Diff line number Diff line Loading @@ -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?, ) Loading
library/src/main/java/com/owncloud/android/lib/resources/assistant/GetTaskTypesRemoteOperation.kt +24 −6 Original line number Diff line number Diff line Loading @@ -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) } Loading
library/src/main/java/com/owncloud/android/lib/resources/assistant/model/TaskTypes.kt +17 −26 Original line number Diff line number Diff line Loading @@ -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?, )