package cn.iocoder.yudao.module.product.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 智慧社区(天创)接口枚举类
 * 对应海康开放平台的api
 * @author zbw
 */
@Getter
@AllArgsConstructor
public enum HikApiEnums {

    MONITOR_POINT_ALL_PAGE_V1("/api/resource/v1/cameras", "分页获取监控点资源",
            "获取监控点列表接口可用来全量同步监控点信息，返回结果分页展示。", "v1"),
    MONITOR_POINT_SEARCH_PAGE_V2("/api/resource/v2/camera/search", "查询监控点列表v2",
            "根据条件查询目录下有权限的监控点列表。当返回字段对应的值为空时，该字段不返回。", "v2"),
    PREVIEW_URLS_V2("/api/video/v2/cameras/previewURLs", "获取监控点预览取流URLv2",
            "1.平台正常运行；平台已经添加过设备和监控点信息。\n" +
            "2.平台需要安装mgc取流服务。\n" +
            "3.通过openAPI获取到监控点数据，依据自身业务开发监控点导航界面。\n" +
            "4.根据监控点编号调用本接口获取预览取流URL，协议类型包括：hik、rtsp、rtmp、hls、ws。\n" +
            "5.通过开放平台的开发包进行实时预览或者使用标准的GUI播放工具进行实时预览。\n" +
            "6.为保证数据的安全性，取流URL设有有效时间，有效时间为5分钟。", "v2"),
    ONLINE_STATUS_PAGE_V1("/api/nms/v1/online/camera/get", "获取监控点在线状态",
            "根据条件获取监控点在线状态接口\n" +
            "级联场景下， 如需调用需要在 \"系统配置–>网络管理配置–>下级平台管理” 中进行配置", "v1"),
    DETAIL_BY_INDEX_CODE("/api/resource/v1/cameras/indexCode", "根据编号获取监控点详细信息",
            "获取单个监控点信息是指根据监控点唯一标识来获取指定的监控点信息", "v1"),
    ;

    /**
     * 接口地址
     */
    private final String url;

    /**
     * 接口名称
     */
    private final String name;

    /**
     * 描述
     */
    private final String desc;

    /**
     * 版本
     */
    private final String ver;

    public static HikApiEnums get(String url) {
        return Arrays.stream(HikApiEnums.values()).filter(e -> e.getUrl().equals(url)).findFirst().orElse(null);
    }
}
