![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.com.huawei.hilink.c2c.integration.helper.requestHandlers.DeviceCommandHiLinkService.kt Maven / Gradle / Ivy
package com.huawei.hilink.c2c.integration.helper.requestHandlers
import com.huawei.hilink.c2c.integration.helper.ProtocolConversionWrapper
import com.huawei.hilink.c2c.integration.helper.api.DeviceDiscovery
import com.huawei.hilink.c2c.integration.helper.api.UserInfo
import com.huawei.hilink.c2c.integration.helper.dto.HiLinkResultCodes
import com.huawei.hilink.c2c.integration.helper.dto.common.HiLinkHeader
import com.huawei.hilink.c2c.integration.helper.dto.headers.HiLinkHeadersBuilder
import com.huawei.hilink.c2c.integration.helper.dto.inbound.request.DeviceCommandRequest
import com.huawei.hilink.c2c.integration.helper.dto.inbound.response.DeviceCommandResponse
import com.huawei.hilink.c2c.integration.helper.dto.inbound.response.HiLinkResponse
import com.huawei.hilink.c2c.integration.helper.json.readValueOrNull
import kotlinx.serialization.json.Json
internal class DeviceCommandHiLinkService(
private val objectMapper: Json,
private val hiLinkHeadersBuilder: HiLinkHeadersBuilder,
private val protocolConversionWrapper: ProtocolConversionWrapper,
private val deviceDiscovery: DeviceDiscovery
) : HiLinkService("DeviceCommand") {
override suspend fun handle(requestHeader: HiLinkHeader, requestJson: String, userInfo: UserInfo): HiLinkResponse {
val request: DeviceCommandRequest = objectMapper.readValueOrNull(requestJson)
?: return prepareResponse(requestHeader, HiLinkResultCodes.INVALID_PARAMETER)
val resultCode = protocolConversionWrapper.executeCommand(userInfo, request.payload.command)
return prepareResponse(requestHeader, resultCode)
}
override fun prepareErrorResponse(
requestHeader: HiLinkHeader,
resultCode: HiLinkResultCodes,
description: String
): HiLinkResponse {
return prepareResponse(requestHeader, resultCode, description)
}
private fun prepareResponse(
requestHeader: HiLinkHeader,
resultCode: HiLinkResultCodes,
description: String? = null
) =
DeviceCommandResponse(
header = hiLinkHeadersBuilder.generateResponseHeader(requestHeader),
payload = DeviceCommandResponse.Payload(
code = resultCode.code,
description = description ?: resultCode.description
)
)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy