mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-02 20:02:25 -06:00 
			
		
		
		
	- update gruf/go-stroage v0.2.0 -> v0.2.1 - update KimMachineGun/automemlimit v0.7.1 -> v0.7.2 - update miekg/dns v1.1.65 -> v1.1.66 - update ncruces/go-sqlite3 v0.25.1 -> v0.25.2 - update spf13/cast v1.7.1 -> v1.8.0 - update tdewolff/minify/v2 v2.23.1 -> v2.23.5 - update x/crypto v0.37.0 -> v0.38.0 - update x/image v0.26.0 -> v0.27.0 - update x/net v0.39.0 -> v0.40.0 - update x/oauth2 v0.29.0 -> v0.30.0 - update x/sys v0.32.0 -> v0.33.0 - update x/text v0.24.0 -> v0.25.0 Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4162 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2014 The Go Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package oauth2
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"log"
 | 
						|
	"net/http"
 | 
						|
	"sync"
 | 
						|
)
 | 
						|
 | 
						|
// Transport is an [http.RoundTripper] that makes OAuth 2.0 HTTP requests,
 | 
						|
// wrapping a base [http.RoundTripper] and adding an Authorization header
 | 
						|
// with a token from the supplied [TokenSource].
 | 
						|
//
 | 
						|
// Transport is a low-level mechanism. Most code will use the
 | 
						|
// higher-level [Config.Client] method instead.
 | 
						|
type Transport struct {
 | 
						|
	// Source supplies the token to add to outgoing requests'
 | 
						|
	// Authorization headers.
 | 
						|
	Source TokenSource
 | 
						|
 | 
						|
	// Base is the base RoundTripper used to make HTTP requests.
 | 
						|
	// If nil, http.DefaultTransport is used.
 | 
						|
	Base http.RoundTripper
 | 
						|
}
 | 
						|
 | 
						|
// RoundTrip authorizes and authenticates the request with an
 | 
						|
// access token from Transport's Source.
 | 
						|
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
 | 
						|
	reqBodyClosed := false
 | 
						|
	if req.Body != nil {
 | 
						|
		defer func() {
 | 
						|
			if !reqBodyClosed {
 | 
						|
				req.Body.Close()
 | 
						|
			}
 | 
						|
		}()
 | 
						|
	}
 | 
						|
 | 
						|
	if t.Source == nil {
 | 
						|
		return nil, errors.New("oauth2: Transport's Source is nil")
 | 
						|
	}
 | 
						|
	token, err := t.Source.Token()
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	req2 := req.Clone(req.Context())
 | 
						|
	token.SetAuthHeader(req2)
 | 
						|
 | 
						|
	// req.Body is assumed to be closed by the base RoundTripper.
 | 
						|
	reqBodyClosed = true
 | 
						|
	return t.base().RoundTrip(req2)
 | 
						|
}
 | 
						|
 | 
						|
var cancelOnce sync.Once
 | 
						|
 | 
						|
// CancelRequest does nothing. It used to be a legacy cancellation mechanism
 | 
						|
// but now only it only logs on first use to warn that it's deprecated.
 | 
						|
//
 | 
						|
// Deprecated: use contexts for cancellation instead.
 | 
						|
func (t *Transport) CancelRequest(req *http.Request) {
 | 
						|
	cancelOnce.Do(func() {
 | 
						|
		log.Printf("deprecated: golang.org/x/oauth2: Transport.CancelRequest no longer does anything; use contexts")
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func (t *Transport) base() http.RoundTripper {
 | 
						|
	if t.Base != nil {
 | 
						|
		return t.Base
 | 
						|
	}
 | 
						|
	return http.DefaultTransport
 | 
						|
}
 |