|
- package octopusHttp
-
- import (
- "crypto/tls"
- "encoding/json"
- "github.com/go-resty/resty/v2"
- "time"
- )
-
- const (
- GetToken = "api/v1/token"
- )
-
- type TokenModel struct {
- Code int `json:"code"`
- Data string `json:"data"`
- Msg string `json:"msg"`
- }
-
- type TokenTimePair struct {
- Token string
- ExpiredAt time.Time
- }
-
- type Login struct {
- Username string `json:"user"`
- Password string `json:"pwd"`
- }
-
- type Token struct {
- server string
- host string
- user string
- pwd string
- }
-
- func (t *Token) Get() (string, error) {
- login := Login{
- Username: t.user,
- Password: t.pwd,
- }
- jsonStr, _ := json.Marshal(login)
- tokenUrl := t.server + GetToken
-
- token, err := generateToken(jsonStr, tokenUrl, t.host)
- if err != nil {
- return "", err
- }
- return token, nil
- }
-
- func generateToken(jsonStr []byte, tokenUrl string, host string) (string, error) {
- client := resty.New().SetTimeout(time.Duration(5) * time.Second)
- req := client.R()
-
- var tokenResp TokenModel
-
- client.SetTLSClientConfig(&tls.Config{
- InsecureSkipVerify: true,
- })
-
- _, err := req.
- SetResult(&tokenResp).
- SetHeader("Content-Type", "application/json").
- SetQueryString("addr=" + host).
- SetBody(jsonStr).
- Post(tokenUrl)
- if err != nil {
- return "", err
- }
-
- return tokenResp.Data, nil
- }
|