zentao.go 2.4 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1
package zentaoHelper
2 3 4

import (
	"fmt"
Z
zhaoke 已提交
5 6 7
	"regexp"
	"strings"

8
	"github.com/bitly/go-simplejson"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9
	commConsts "github.com/easysoft/zentaoatf/internal/pkg/consts"
Z
zhaoke 已提交
10
	commDomain "github.com/easysoft/zentaoatf/internal/pkg/domain"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
11
	serverDomain "github.com/easysoft/zentaoatf/internal/server/modules/v1/domain"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
12 13 14
	httpUtils "github.com/easysoft/zentaoatf/pkg/lib/http"
	i118Utils "github.com/easysoft/zentaoatf/pkg/lib/i118"
	logUtils "github.com/easysoft/zentaoatf/pkg/lib/log"
15 16
)

17
func GetConfig(baseUrl string) (err error) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
18
	url := baseUrl + "?mode=getconfig"
19 20 21
	bytes, err := httpUtils.Get(url)
	if err != nil {
		return
aaronchen2k2k's avatar
aaronchen2k2k 已提交
22 23 24 25 26 27 28
	}

	json, _ := simplejson.NewJson(bytes)
	commConsts.ZenTaoVersion, _ = json.Get("version").String()
	commConsts.SessionId, _ = json.Get("sessionID").String()
	commConsts.SessionVar, _ = json.Get("sessionVar").String()
	requestType, _ := json.Get("requestType").String()
aaronchen2k2k's avatar
i118  
aaronchen2k2k 已提交
29
	commConsts.RequestType = requestType
aaronchen2k2k's avatar
aaronchen2k2k 已提交
30 31
	commConsts.RequestFix, _ = json.Get("requestFix").String()

32
	return
aaronchen2k2k's avatar
aaronchen2k2k 已提交
33 34
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
35
func Login(config commDomain.WorkspaceConf) (err error) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
36 37 38 39 40 41 42 43
	url := GenApiUrl("tokens", nil, config.Url)

	params := map[string]string{
		"account":  config.Username,
		"password": config.Password,
	}
	bodyBytes, err := httpUtils.Post(url, params)
	if err != nil {
44
		err = ZentaoLoginErr(err.Error())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
45
		return
aaronchen2k2k's avatar
aaronchen2k2k 已提交
46 47
	}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
48 49
	jsn, err := simplejson.NewJson(bodyBytes)
	if err != nil {
50
		err = ZentaoLoginErr(err.Error())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
51 52

		return
aaronchen2k2k's avatar
aaronchen2k2k 已提交
53 54
	}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
55 56 57
	if jsn == nil {
		return
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
58 59
	mp, err := jsn.Map()
	if err != nil {
60
		err = ZentaoLoginErr(err.Error())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
61 62 63

		return
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
64 65 66 67

	val, ok := mp["token"]
	if ok {
		commConsts.SessionId = val.(string)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
68 69 70
		if commConsts.Verbose {
			logUtils.Info(i118Utils.Sprintf("success_to_login"))
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
71 72

	} else {
Z
zhaoke 已提交
73
		err = ZentaoLoginErr(fmt.Sprintf("%#v", mp["error"]))
aaronchen2k2k's avatar
aaronchen2k2k 已提交
74 75

		return
aaronchen2k2k's avatar
aaronchen2k2k 已提交
76 77 78 79 80
	}

	return
}

81
func ListLang() (langs []serverDomain.ZentaoLang, err error) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
82 83
	for key, mp := range commConsts.LangMap {
		langs = append(langs, serverDomain.ZentaoLang{Code: key, Name: mp["name"]})
84 85 86 87 88
	}

	return
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
89
func FixSiteUrl(url string) (ret string) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
90 91 92 93 94 95 96 97 98 99 100 101
	regx := regexp.MustCompile(`(http|https):\/\/.+`)
	result := regx.FindStringSubmatch(url)
	if result == nil {
		return
	}

	regx = regexp.MustCompile(`[^:\/]\/`)
	result = regx.FindStringSubmatch(url)
	if result == nil { // without /
		ret = url
	} else {
		index := strings.LastIndex(url, "/")
Z
zhaoke 已提交
102 103 104 105 106
		if url[index+1:] != "zentao" {
			ret = url[:index+1]
		} else {
			ret = url
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
107 108 109 110
	}

	return
}