package com.example.zxweb.common.constant.enums;


/**
 * @Description: IOT设备API接口路径
 * @author: ZhouWenTao
 * @date: 2023/9/8 12:05
 */
public enum IotApiEnum {

    /**
     * 获取单个设备信息 GET,query
     */
    get_devices("/devices", "获取单个设备信息"),

    /**
     * 获取设备列表 GET,query
     */
    get_devices_list("/devices/list", "获取设备列表"),

    /**
     * 向设备发送消息 POST,body
     */
    post_devices_datastreams("/devices/datastreams", "向设备发送消息"),

    /**
     * 查询设备历史数据 GET
     */
    get_devices_datastreams("/devices/datastreams", "查询设备历史数据"),

    /**
     * 查询消息是否下达到设备 GET
     */
    get_devices_datastreams_state("/devices/datastreams/state", "查询消息是否下达到设备"),

    /**
     * 查询事件历史数据 GET
     */
    get_devices_events("/devices/events", "查询事件历史数据"),

    /**
     * 向设备发送方法 POST,body
     */
    post_devices_methods("/devices/methods", "向设备发送方法"),

    /**
     * 查询方法历史数据 GET
     */
    get_devices_methods("/devices/methods", "查询方法历史数据"),


    ;


    /**
     * 地址
     */
    String path;
    /**
     * 描述
     */
    String text;


    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getText(){
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    /**
     * 构造器
     *
     * @param path 地址
     * @param text 描述
     */
    IotApiEnum(String path, String text) {
        this.path = path;
        this.text = text;
    }


    /**
     * 根据描述匹配
     *
     * @param path 请求地址
     * @return String 描述
     */
    public static String getTextByPath(String path){
        for (IotApiEnum e : IotApiEnum.values()) {
            if (path.startsWith(e.getPath())) {
                return e.getText();
            }
        }
        return null;
    }

    /**
     * 根据路径描述获取路径
     * @param text 描述
     * @return
     */
    public static String getPathByText(String text){
        for (IotApiEnum e : IotApiEnum.values()) {
            if (text.startsWith(e.getText())) {
                return e.getPath();
            }
        }
        return null;
    }
}
