package util

import (
	"fmt"
	"regexp"
	"strconv"
	"strings"
)

// 获取微信客户端的版本.
//
//	userAgent: 微信内置浏览器的 User-Agent;
//	x, y, z, w:   如果微信版本为 5.3.1.2 则有 x==5, y==3, z==1, w==2
//	err:       错误信息
func WXVersion(userAgent string) (x, y, z, w int, err error) {
	userAgent = versionRegexp.FindString(userAgent)
	if userAgent == "" {
		err = fmt.Errorf("不是有效的微信浏览器 User-Agent: %s", userAgent)
		return
	}
	userAgent = userAgent[len("MicroMessenger/"):]

	strArr := strings.Split(userAgent, ".")
	verArr := make([]int, len(strArr))

	for i, str := range strArr {
		verArr[i], err = strconv.Atoi(str)
		if err != nil {
			err = fmt.Errorf("不是有效的微信浏览器 User-Agent: %s", userAgent)
			return
		}
	}

	switch len(verArr) {
	default:
		fallthrough
	case 4:
		x = verArr[0]
		y = verArr[1]
		z = verArr[2]
		w = verArr[3]
		return
	case 3:
		x = verArr[0]
		y = verArr[1]
		z = verArr[2]
		return
	case 2:
		x = verArr[0]
		y = verArr[1]
		return
	case 1:
		x = verArr[0]
		return
	}
}

// Mozilla/5.0 (Linux; Android 4.4.4; Che1-CL10 Build/Che1-CL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043128 Safari/537.36 MicroMessenger/6.5.7.1041 NetType/WIFI Language/zh_CN
var versionRegexp = regexp.MustCompile(`MicroMessenger/\d+(\.\d+)*`)
