mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 13:00:52 +08:00
**refactor(auth): use customizable HTTP client for Antigravity requests**
- Replaced `http.DefaultClient` with a configurable `http.Client` instance for Antigravity OAuth flow methods. - Updated `exchangeAntigravityCode` and `fetchAntigravityUserInfo` to accept `httpClient` as a parameter. - Added `util.SetProxy` usage to initialize the `httpClient` with proxy support.
This commit is contained in:
@@ -59,6 +59,8 @@ func (AntigravityAuthenticator) Login(ctx context.Context, cfg *config.Config, o
|
|||||||
opts = &LoginOptions{}
|
opts = &LoginOptions{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
httpClient := util.SetProxy(&cfg.SDKConfig, &http.Client{})
|
||||||
|
|
||||||
state, err := misc.GenerateRandomState()
|
state, err := misc.GenerateRandomState()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("antigravity: failed to generate state: %w", err)
|
return nil, fmt.Errorf("antigravity: failed to generate state: %w", err)
|
||||||
@@ -113,14 +115,14 @@ func (AntigravityAuthenticator) Login(ctx context.Context, cfg *config.Config, o
|
|||||||
return nil, fmt.Errorf("antigravity: missing authorization code")
|
return nil, fmt.Errorf("antigravity: missing authorization code")
|
||||||
}
|
}
|
||||||
|
|
||||||
tokenResp, errToken := exchangeAntigravityCode(ctx, cbRes.Code, redirectURI)
|
tokenResp, errToken := exchangeAntigravityCode(ctx, cbRes.Code, redirectURI, httpClient)
|
||||||
if errToken != nil {
|
if errToken != nil {
|
||||||
return nil, fmt.Errorf("antigravity: token exchange failed: %w", errToken)
|
return nil, fmt.Errorf("antigravity: token exchange failed: %w", errToken)
|
||||||
}
|
}
|
||||||
|
|
||||||
email := ""
|
email := ""
|
||||||
if tokenResp.AccessToken != "" {
|
if tokenResp.AccessToken != "" {
|
||||||
if info, errInfo := fetchAntigravityUserInfo(ctx, tokenResp.AccessToken); errInfo == nil && strings.TrimSpace(info.Email) != "" {
|
if info, errInfo := fetchAntigravityUserInfo(ctx, tokenResp.AccessToken, httpClient); errInfo == nil && strings.TrimSpace(info.Email) != "" {
|
||||||
email = strings.TrimSpace(info.Email)
|
email = strings.TrimSpace(info.Email)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,7 +204,7 @@ type antigravityTokenResponse struct {
|
|||||||
TokenType string `json:"token_type"`
|
TokenType string `json:"token_type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func exchangeAntigravityCode(ctx context.Context, code, redirectURI string) (*antigravityTokenResponse, error) {
|
func exchangeAntigravityCode(ctx context.Context, code, redirectURI string, httpClient *http.Client) (*antigravityTokenResponse, error) {
|
||||||
data := url.Values{}
|
data := url.Values{}
|
||||||
data.Set("code", code)
|
data.Set("code", code)
|
||||||
data.Set("client_id", antigravityClientID)
|
data.Set("client_id", antigravityClientID)
|
||||||
@@ -216,7 +218,7 @@ func exchangeAntigravityCode(ctx context.Context, code, redirectURI string) (*an
|
|||||||
}
|
}
|
||||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
|
||||||
resp, errDo := http.DefaultClient.Do(req)
|
resp, errDo := httpClient.Do(req)
|
||||||
if errDo != nil {
|
if errDo != nil {
|
||||||
return nil, errDo
|
return nil, errDo
|
||||||
}
|
}
|
||||||
@@ -240,7 +242,7 @@ type antigravityUserInfo struct {
|
|||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchAntigravityUserInfo(ctx context.Context, accessToken string) (*antigravityUserInfo, error) {
|
func fetchAntigravityUserInfo(ctx context.Context, accessToken string, httpClient *http.Client) (*antigravityUserInfo, error) {
|
||||||
if strings.TrimSpace(accessToken) == "" {
|
if strings.TrimSpace(accessToken) == "" {
|
||||||
return &antigravityUserInfo{}, nil
|
return &antigravityUserInfo{}, nil
|
||||||
}
|
}
|
||||||
@@ -250,7 +252,7 @@ func fetchAntigravityUserInfo(ctx context.Context, accessToken string) (*antigra
|
|||||||
}
|
}
|
||||||
req.Header.Set("Authorization", "Bearer "+accessToken)
|
req.Header.Set("Authorization", "Bearer "+accessToken)
|
||||||
|
|
||||||
resp, errDo := http.DefaultClient.Do(req)
|
resp, errDo := httpClient.Do(req)
|
||||||
if errDo != nil {
|
if errDo != nil {
|
||||||
return nil, errDo
|
return nil, errDo
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user