From 52dcbfe1a4bfc2e772530328226011a616acb044 Mon Sep 17 00:00:00 2001 From: foxxorcat Date: Mon, 9 May 2022 18:14:52 +0800 Subject: [PATCH] fix(xunlei):missing x-client-id error in some user requests --- drivers/xunlei/driver.go | 4 +++- drivers/xunlei/xunlei.go | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/xunlei/driver.go b/drivers/xunlei/driver.go index bd2dddbc..2e5b6325 100644 --- a/drivers/xunlei/driver.go +++ b/drivers/xunlei/driver.go @@ -105,7 +105,7 @@ func (driver XunLeiCloud) Items() []base.Item { Label: "device id", Default: utils.GetMD5Encode(uuid.NewString()), Type: base.TypeString, - Required: false, + Required: true, }, } } @@ -118,8 +118,10 @@ func (driver XunLeiCloud) Save(account *model.Account, old *model.Account) error client := GetClient(account) // 指定验证通过的captchaToken if client.captchaToken != "" { + client.Lock() client.captchaToken = account.CaptchaToken account.CaptchaToken = "" + client.Unlock() } if client.token == "" { diff --git a/drivers/xunlei/xunlei.go b/drivers/xunlei/xunlei.go index 13acd202..a1b1a656 100644 --- a/drivers/xunlei/xunlei.go +++ b/drivers/xunlei/xunlei.go @@ -73,6 +73,8 @@ func (c *Client) requestCaptchaToken(action string, meta map[string]string) erro SetBody(¶m). SetError(&e). SetResult(&resp). + SetHeader("X-Device-Id", c.deviceID). + SetQueryParam("client_id", c.clientID). Post(XLUSER_API_URL + "/shield/captcha/init") if err != nil { return err @@ -133,6 +135,8 @@ func (c *Client) Login(account *model.Account) (err error) { Username: account.Username, Password: account.Password, }). + SetHeader("X-Device-Id", c.deviceID). + SetQueryParam("client_id", c.clientID). Post(url) if err != nil { return err @@ -184,6 +188,8 @@ func (c *Client) RefreshToken() error { "client_id": c.clientID, "client_secret": c.clientSecret, }). + SetHeader("X-Device-Id", c.deviceID). + SetQueryParam("client_id", c.clientID). Post(XLUSER_API_URL + "/auth/token") if err != nil { return err @@ -211,7 +217,8 @@ func (c *Client) Request(method string, url string, callback func(*resty.Request "X-Captcha-Token": c.captchaToken, "User-Agent": c.userAgent, "client_id": c.clientID, - }).SetQueryParam("client_id", c.clientID) + }). + SetQueryParam("client_id", c.clientID) if callback != nil { callback(req) }