package deviceUtil

import (
	"strings"
)

// 将MAC地址转化为标准格式
func ConvertMacToStandardFormat(mac string) string {
    if mac == "" || mac == "00:00:00:00:00:00" || mac == "02:00:00:00:00:00" {
		return ""
	}

    //如果mac的长度不为12或17，则是不正确的格式
    if len(mac) != 12 && len(mac) != 17 {
		return ""
    }


    //转化为大写
	mac = strings.ToUpper(mac)

    //如果mac地址的长度为17（已经有:），则直接返回
	if len(mac) == 17 {
		return mac
	}

    //如果没有分隔符，则添加分隔符
	newMac := make([]rune, 0, 17)
	for i, v := range []rune(mac) {
		newMac = append(newMac, v)
		if i < len(mac) - 1 && i % 2 == 1 {
			newMac = append(newMac, ':')
		}
	}

	return string(newMac)
}

func ConvertIdfaToStandardFormat(idfa string) string {
	//如果是空或默认值，则返回String.Empty
	if idfa == "" || idfa == "00000000-0000-0000-0000-000000000000" {
		return ""
	}

    //如果idfa的长度不为32或36，则代表是Android的数据，则可以直接返回
	if len(idfa) != 32 && len(idfa) != 36 {
		return idfa
	}

    //转化为大写
    idfa = strings.ToUpper(idfa);

    //如果idfa地址的长度为36（已经有:），则直接返回
    if len(idfa) == 36 {
		return idfa
	}

    //如果没有分隔符，则添加分隔符
	newIdfa := make([]rune, 0, 36)
	for i, v := range []rune(idfa) {
		newIdfa = append(newIdfa, v)
		if i == 7 || i == 11 || i == 15 || i == 19 {
			newIdfa = append(newIdfa, '-')
		}
	}

	return string(newIdfa)
}

// 根据MAC和IDFA获取唯一标识
func GetIdentifier(mac, idfa string) string {
	mac = ConvertMacToStandardFormat(mac)
    idfa = ConvertIdfaToStandardFormat(idfa);

    //如果idfa不为空，则使用idfa，否则使用mac
    if idfa != "" {
		return idfa
	} else {
		return mac
	}
}
