package com.fastbee.iot.haikang;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**
 * 点点控api界面
 */
public class HaikangYingshiApi {
    /**
     * @return
     */
    public static JSONObject getToken(Map<String, Object> params) {
        String url = UrlConstant.getToken;//指定URL

        HashMap<String, String> headers = new HashMap<>();//存放请求头，可以存放多个请求头
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
        JSONObject jsonObject = new JSONObject(result);
//        System.out.println("jsonObject = " + jsonObject);
//        Map<String,Object> data =null;
//        if (jsonObject.get("code").equals("200")) {
//            data= (Map<String,Object>) jsonObject.get("data");
//        }
        return jsonObject;
    }

    /**
     * @param params accessToken	String	授权过程获取的access_token	Y
     *               deviceSerial	String	直播源，例如427734222，均采用英文符号，限制50个	Y
     *               channelNo	Integer	通道号,，非必选，默认为1	N
     *               code	String	ezopen协议地址的设备的视频加密密码	N
     *               expireTime	Integer	过期时长，单位秒；针对hls/rtmp设置有效期，相对时间；30秒-720天	N
     *               protocol	Integer	流播放协议，1-ezopen、2-hls、3-rtmp、4-flv，默认为1	N
     *               quality	Integer	视频清晰度，1-高清（主码流）、2-流畅（子码流）	N
     *               startTime	String	ezopen协议地址的本地录像/云存储录像回放开始时间,示例：2019-12-01 00:00:00	N
     *               stopTime	String	ezopen协议地址的本地录像/云存储录像回放开始时间,示例：2019-12-01 00:00:00	N
     *               type	String	ezopen协议地址的类型，1-预览，2-本地录像回放，3-云存储录像回放，非必选，默认为1	N
     *               supportH265	Integer	是否要求播放视频为H265编码格式,1表示需要，0表示不要求	N
     *               gbchannel	String	国标设备的通道编号，视频通道编号ID	N
     * @return
     */
    public static JSONObject getAddress(Map<String, Object> params) {
//        accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
        String url = UrlConstant.address;//指定URL
        HashMap<String, String> headers = new HashMap<>();//存放请求头，可以存放多个请求头
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
        JSONObject jsonObject = new JSONObject(result);
//        System.out.println("result = " + result);
//        Map<String,Object> data =(Map<String,Object>) jsonObject.get("data");
        return jsonObject;
    }

    /**
     * @param params accessToken	String	授权过程获取的access_token	Y
     *               deviceSerial	String	设备序列号,存在英文字母的设备序列号，字母需为大写	Y
     *               channelNo	int	通道号	Y
     *               direction	int	操作命令：0-上，1-下，2-左，3-右，4-左上，5-左下，6-右上，7-右下，8-放大，9-缩小，10-近焦距，11-远焦距	Y
     *               speed	int	云台速度：0-慢，1-适中，2-快，海康设备参数不可为0
     * @return
     */
    public static JSONObject startMove(Map<String, Object> params) {
//        accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
        String url = UrlConstant.startyuntai;//指定URL
        HashMap<String, String> headers = new HashMap<>();//存放请求头，可以存放多个请求头
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
        JSONObject jsonObject = new JSONObject(result);

        return jsonObject;
    }

    /**
     * @param params accessToken	String	授权过程获取的access_token	Y
     *               deviceSerial	String	设备序列号,存在英文字母的设备序列号，字母需为大写	Y
     *               channelNo	int	通道号	Y
     *               direction	int	操作命令：0-上，1-下，2-左，3-右，4-左上，5-左下，6-右上，7-右下，8-放大，9-缩小，10-近焦距，11-远焦距	Y
     * @return
     */
    public static JSONObject stopMove(Map<String, Object> params) {
//        accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
        String url = UrlConstant.stopyuntai;//指定URL
        HashMap<String, String> headers = new HashMap<>();//存放请求头，可以存放多个请求头
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
        JSONObject jsonObject = new JSONObject(result);

        return jsonObject;
    }


    /**
     * @param params accessToken	String	授权过程获取的access_token	Y
     *               deviceSerial	String	设备序列号,存在英文字母的设备序列号，字母需为大写	Y
     *               channelNo	int	通道号	Y
     *               direction	int	操作命令：0-上，1-下，2-左，3-右，4-左上，5-左下，6-右上，7-右下，8-放大，9-缩小，10-近焦距，11-远焦距	Y
     * @return
     */
    public static JSONObject getDeviceInfo(Map<String, Object> params) {
//        accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
        String url = UrlConstant.deviceInfo;//指定URL
        HashMap<String, String> headers = new HashMap<>();//存放请求头，可以存放多个请求头
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
        JSONObject jsonObject = new JSONObject(result);

        return jsonObject;
    }

    /**
     * @param params accessToken	String	授权过程获取的access_token	Y
     *               deviceSerial	String	直播源，例如427734222，均采用英文符号，限制50个	Y
     *               channelNo	Integer	通道号,，非必选，默认为1	N
     * @return
     */
    public static JSONObject capture(Map<String, Object> params) {
//        accessToken=at.dunwhxt2azk02hcn7phqygsybbw0wv6p&deviceSerial=C78957921&channelNo=1
        String url = UrlConstant.capture;//指定URL
        HashMap<String, String> headers = new HashMap<>();//存放请求头，可以存放多个请求头
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        String result = HttpUtil.createPost(url).addHeaders(headers).form(params).execute().body();
        JSONObject jsonObject = new JSONObject(result);
//        System.out.println("result = " + result);
//        Map<String,Object> data =(Map<String,Object>) jsonObject.get("data");
        return jsonObject;
    }

}
