You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

token.go 1.3 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package octopusHttp
  2. import (
  3. "crypto/tls"
  4. "encoding/json"
  5. "github.com/go-resty/resty/v2"
  6. "time"
  7. )
  8. const (
  9. GetToken = "api/v1/token"
  10. )
  11. type TokenModel struct {
  12. Code int `json:"code"`
  13. Data string `json:"data"`
  14. Msg string `json:"msg"`
  15. }
  16. type TokenTimePair struct {
  17. Token string
  18. ExpiredAt time.Time
  19. }
  20. type Login struct {
  21. Username string `json:"user"`
  22. Password string `json:"pwd"`
  23. }
  24. type Token struct {
  25. server string
  26. host string
  27. user string
  28. pwd string
  29. }
  30. func (t *Token) Get() (string, error) {
  31. login := Login{
  32. Username: t.user,
  33. Password: t.pwd,
  34. }
  35. jsonStr, _ := json.Marshal(login)
  36. tokenUrl := t.server + GetToken
  37. token, err := generateToken(jsonStr, tokenUrl, t.host)
  38. if err != nil {
  39. return "", err
  40. }
  41. return token, nil
  42. }
  43. func generateToken(jsonStr []byte, tokenUrl string, host string) (string, error) {
  44. client := resty.New().SetTimeout(time.Duration(5) * time.Second)
  45. req := client.R()
  46. var tokenResp TokenModel
  47. client.SetTLSClientConfig(&tls.Config{
  48. InsecureSkipVerify: true,
  49. })
  50. _, err := req.
  51. SetResult(&tokenResp).
  52. SetHeader("Content-Type", "application/json").
  53. SetQueryString("addr=" + host).
  54. SetBody(jsonStr).
  55. Post(tokenUrl)
  56. if err != nil {
  57. return "", err
  58. }
  59. return tokenResp.Data, nil
  60. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.