**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:
Luis Pater
2025-11-21 20:54:56 +08:00
parent b4d15ace91
commit 327cc7039e

View File

@@ -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
} }