diff --git a/models/container.go b/models/container.go index c98a0a7..8941c4c 100644 --- a/models/container.go +++ b/models/container.go @@ -113,7 +113,7 @@ func initContainer() { func (c *Container) write(cks []JdCookie) error { switch c.Type { case "ql": - if (c.Version == "2.9" || c.Version == "2.8"){ + if c.Version == "2.9" || c.Version == "2.8" { if len(c.Delete) > 0 { c.request("/api/envs", DELETE, fmt.Sprintf(`[%s]`, strings.Join(c.Delete, ","))) } @@ -237,7 +237,7 @@ func (c *Container) read() error { c.Available = true switch c.Type { case "ql": - if (c.Version == "2.9" || c.Version == "2.8") { + if c.Version == "2.9" || c.Version == "2.8" { type AutoGenerated struct { Code int `json:"code"` Data []struct { @@ -349,20 +349,35 @@ func (c *Container) read() error { } func (c *Container) getToken() error { - req := httplib.Post(c.Address + "/api/login") - req.Header("Content-Type", "application/json;charset=UTF-8") - req.Body(fmt.Sprintf(`{"username":"%s","password":"%s"}`, c.Username, c.Password)) - if rsp, err := req.Response(); err == nil { - data, err := ioutil.ReadAll(rsp.Body) - if err != nil { + if c.Version == "2.9" { + req := httplib.Get(c.Address + fmt.Sprintf(`/open/auth/token?client_id=%s&client_secret=%s`, c.Username, c.Password)) + req.Header("Content-Type", "application/json;charset=UTF-8") + if rsp, err := req.Response(); err == nil { + data, err := ioutil.ReadAll(rsp.Body) + if err != nil { + return err + } + c.Token, _ = jsonparser.GetString(data, "data", "token") + logs.Info(c.Token) + } else { return err } - c.Token, _ = jsonparser.GetString(data, "token") - if c.Token == "" { - c.Token, _ = jsonparser.GetString(data, "data", "token") - } } else { - return err + req := httplib.Post(c.Address + "/api/login") + req.Header("Content-Type", "application/json;charset=UTF-8") + req.Body(fmt.Sprintf(`{"username":"%s","password":"%s"}`, c.Username, c.Password)) + if rsp, err := req.Response(); err == nil { + data, err := ioutil.ReadAll(rsp.Body) + if err != nil { + return err + } + c.Token, _ = jsonparser.GetString(data, "token") + if c.Token == "" { + c.Token, _ = jsonparser.GetString(data, "data", "token") + } + } else { + return err + } } return nil } @@ -373,6 +388,9 @@ func (c *Container) request(ss ...string) ([]byte, error) { if s == GET || s == POST || s == PUT || s == DELETE { method = s } else if strings.Contains(s, "/api/") { + if c.Version == "2.9" { + strings.ReplaceAll(s, "api", "open") + } api = s } else { body = s @@ -432,7 +450,7 @@ func GetQlVersion(address string) (string, error) { } else if strings.Contains(data, "v2.2") { v = "2.2" } else if strings.Contains(data, "v2.9") { - v = "2.9" + v = "2.9" } return v, nil }