From 1e1ab3a615b8372bb95840bfe101f344448b188d Mon Sep 17 00:00:00 2001 From: Guilherme Branco Date: Thu, 13 Feb 2025 12:26:18 -0300 Subject: [PATCH] refactor: rely on requests with ctx Current implementation for oauth2 repo, specifically jwt, jira and google/downscope packages rely on .PostForm function which does not allow to specify a context. The context is available within the function and preferably should be used to give more control to the consumer --- google/downscope/downscoping.go | 7 ++++++- jira/jira.go | 7 ++++++- jwt/jwt.go | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/google/downscope/downscoping.go b/google/downscope/downscoping.go index ebe8b0509..d3576d73c 100644 --- a/google/downscope/downscoping.go +++ b/google/downscope/downscoping.go @@ -193,7 +193,12 @@ func (dts downscopingTokenSource) Token() (*oauth2.Token, error) { form.Add("options", string(b)) myClient := oauth2.NewClient(dts.ctx, nil) - resp, err := myClient.PostForm(dts.identityBindingEndpoint, form) + req, err := http.NewRequestWithContext(dts.ctx, http.MethodPost, dts.identityBindingEndpoint, strings.NewReader(form.Encode())) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + resp, err := myClient.Do(req) if err != nil { return nil, fmt.Errorf("unable to generate POST Request %v", err) } diff --git a/jira/jira.go b/jira/jira.go index 814656e9e..e958fa515 100644 --- a/jira/jira.go +++ b/jira/jira.go @@ -109,7 +109,12 @@ func (js jwtSource) Token() (*oauth2.Token, error) { // Fetch access token from auth server hc := oauth2.NewClient(js.ctx, nil) - resp, err := hc.PostForm(js.conf.Endpoint.TokenURL, v) + req, err := http.NewRequestWithContext(js.ctx, http.MethodPost, js.conf.Endpoint.TokenURL, strings.NewReader(v.Encode())) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + resp, err := hc.Do(req) if err != nil { return nil, fmt.Errorf("oauth2: cannot fetch token: %v", err) } diff --git a/jwt/jwt.go b/jwt/jwt.go index b2bf18298..a46a90d3d 100644 --- a/jwt/jwt.go +++ b/jwt/jwt.go @@ -131,7 +131,12 @@ func (js jwtSource) Token() (*oauth2.Token, error) { v := url.Values{} v.Set("grant_type", defaultGrantType) v.Set("assertion", payload) - resp, err := hc.PostForm(js.conf.TokenURL, v) + req, err := http.NewRequestWithContext(js.ctx, http.MethodPost, js.conf.TokenURL, strings.NewReader(v.Encode())) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + resp, err := hc.Do(req) if err != nil { return nil, fmt.Errorf("oauth2: cannot fetch token: %v", err) }