package com.hotent.uc.config;

import com.hotent.uc.manager.ZabbixApi;
import com.hotent.uc.manager.impl.DefaultZabbixApiImpl;
import groovy.util.logging.Slf4j;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
//@ConfigurationProperties(prefix = "zabbix.config")
@Data
@Slf4j
public class ZabbixConfig {
    @Value("${zabbix.config.url}")
    private String url;
    @Value("${zabbix.config.username}")
    private String username;
    @Value("${zabbix.config.password}")
    private String password;
    private volatile  ZabbixApi zabbixApi;

    /**
     * 獲取API
     * @return
     */
    public ZabbixApi getZabbixApi() {
        if (null == zabbixApi) {
            synchronized (ZabbixConfig.class) {
                if (null == zabbixApi) {
//                    zabbixApi = new DefaultZabbixApiImpl(url);
//                    zabbixApi.init();
//                    login();
                }
            }
        }
        return zabbixApi;
    }

    /**
     * 登錄
     */
    public void login(){
        boolean login = zabbixApi.login(username,password);
        if(!login){
            throw new RuntimeException("zabbix login failed!");
        }
//        log.info("zabbix login success!");
    }

    /**
     * zabbix判断登录是否失效
     * @return
     */
    public  boolean loginIsExpire(){
        return zabbixApi.checkAuthExpired();
    }
}
