package com.qiuguo.iot.third.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.tuya.connector.api.annotations.Body;
import com.tuya.connector.api.annotations.DELETE;
import com.tuya.connector.api.annotations.GET;
import com.tuya.connector.api.annotations.POST;
import com.tuya.connector.api.annotations.PUT;
import com.tuya.connector.api.annotations.Path;
import com.tuya.connector.api.annotations.Query;
import java.util.List;

/**
 * XXX
 *
 * @author weiyachao
 * @since 2023/9/18 16:41
 */
public interface TuyaDeviceConnector {
    
    // 获取品类所支持的指令集
    @GET("/v1.0/iot-03/categories/{category}/functions")
    JSONArray getCategoryFunctions(@Path("category") String category);
    
    // 获取设备状态
    @GET("/v1.0/iot-03/devices/{device_id}/status")
    JSONArray getDeviceStatus(@Path("device_id") String deviceId);
    
    // 获取所有分类
    @GET("/v1.0/iot-03/device-categories")
    JSONArray categories();
    
    // 转移设备
    @POST("/v2.0/cloud/thing/{device_id}/transfer")
    Boolean transferDevice(@Path("device_id") String deviceId,@Body JSONObject jsonObject);
    
    // 查询设备信息,多个id使用,隔开
    @GET("/v2.0/cloud/thing/batch")
    JSONArray getByid(@Query("device_ids") String deviceId);
    
    // 查询空间下设备列表
    @GET("/v2.0/cloud/thing/space/device")
    JSONArray getDevicesBySpaceIds(@Query("space_ids") String spaces, @Query("page_size") Integer size);
    
    // 控制设备动作
    @POST("/v1.0/iot-03/devices/{device_id}/commands")
    Boolean controlDevice(@Path("device_id") String deviceId, @Body JSONObject commands);
    
    // 创建空间
    @POST("/v2.0/cloud/space/creation")
    Long creatSpace(@Body JSONObject jsonObject);
    
    // 删除空间
    @DELETE("/v2.0/cloud/space/{space_id}")
    Boolean deleteSpace(@Path("space_id") String spaceId);
    
    // 查询空间
    @GET("/v2.0/cloud/space/{space_id}")
    JSONObject getSpaceInfo(@Path("space_id") String spaceId);
    
    // 修改空间信息
    @PUT("/v2.0/cloud/space/{space_id}")
    Boolean updateSpace(@Path("space_id") String spaceId, @Body JSONObject JSONObject);
    
    // 获取设备支持的指令集
    @GET("/v1.0/iot-03/devices/{device_id}/functions")
    Object getFunctions(@Path("device_id") String deviceId);
    
}
