"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GlobalZoneUtils = void 0;
require("zone.js");
const MsConsts_1 = require("../defines/MsConsts");
const CommUtils_1 = require("./CommUtils");
/**
 * 全局Zone操作工具类，Zone相似于Java中的ThreadLocal，
 * 描述JavaScript执行过程的上下文，它是一个跨异步任务依然存在的上下文，有点类似于TLS（thread-local storage: 线程本地存储）技术
 *
 * 当前读取的是Webide开发的微服务中的全局Zone对象，可获取当前用户、请求头信息等
 * @author wufenglin
 * @time 2021-01-13
 */
class GlobalZoneUtils {
    /**
    * 从Zone 中获取灰度标签
    * @param headers
    */
    static getGrayLabel() {
        try {
            const headers = GlobalZoneUtils.getHeaders();
            if (headers) {
                const mmsGrayLabel = headers[MsConsts_1.MsConsts.MMS_GRAY_LABEL_KEY];
                if (CommUtils_1.CommUtils.isNotEmpty(mmsGrayLabel)) {
                    return mmsGrayLabel;
                }
            }
        }
        catch (e) {
        }
    }
    /**
     * 从全局设置的Zone 中读取请求头信息，Zone 由webide开发完成的微服务项目写入
     *
     */
    static getHeaders() {
        try {
            if (Zone && Zone.current) {
                return Zone.current.get(MsConsts_1.MsConsts.REQUEST_HEADER_PROP_NAME);
            }
        }
        catch (e) {
        }
    }
}
exports.GlobalZoneUtils = GlobalZoneUtils;
