PoC handle 429 coming from rawgithubuser by passing auth header

This commit is contained in:
Martin Kluska 2025-05-21 11:26:46 +02:00
parent e65429b1e5
commit e2335d7e64
No known key found for this signature in database
GPG key ID: 52B6E1C9F7A10E6F
6 changed files with 37 additions and 16 deletions

View file

@ -14,8 +14,9 @@ import (
)
type HTTPURLLoader struct {
client http.Client
cache cache.Cache
client http.Client
cache cache.Cache
authToken string
}
func (l *HTTPURLLoader) Load(url string) (any, error) {
@ -25,7 +26,17 @@ func (l *HTTPURLLoader) Load(url string) (any, error) {
}
}
resp, err := l.client.Get(url)
req, err := http.NewRequest("GET", url, nil)
if err != nil {
msg := fmt.Sprintf("Error creating request: %s", err)
return nil, errors.New(msg)
}
if l.authToken != "i" {
req.Header.Set("Authorization", "Bearer "+l.authToken)
}
resp, err := l.client.Do(req)
if err != nil {
msg := fmt.Sprintf("failed downloading schema at %s: %s", url, err)
return nil, errors.New(msg)
@ -62,7 +73,7 @@ func (l *HTTPURLLoader) Load(url string) (any, error) {
return s, nil
}
func NewHTTPURLLoader(skipTLS bool, cache cache.Cache) (*HTTPURLLoader, error) {
func NewHTTPURLLoader(skipTLS bool, cache cache.Cache, authToken string) (*HTTPURLLoader, error) {
transport := &http.Transport{
MaxIdleConns: 100,
IdleConnTimeout: 3 * time.Second,
@ -80,6 +91,10 @@ func NewHTTPURLLoader(skipTLS bool, cache cache.Cache) (*HTTPURLLoader, error) {
retryClient.HTTPClient = &http.Client{Transport: transport}
retryClient.Logger = nil
httpLoader := HTTPURLLoader{client: *retryClient.StandardClient(), cache: cache}
httpLoader := HTTPURLLoader{
client: *retryClient.StandardClient(),
cache: cache,
authToken: authToken,
}
return &httpLoader, nil
}

View file

@ -195,7 +195,7 @@ func TestHTTPURLLoader_Load_Retries(t *testing.T) {
defer server.Close()
// Create HTTPURLLoader
loader, _ := NewHTTPURLLoader(false, nil)
loader, _ := NewHTTPURLLoader(false, nil, "")
fullurl := server.URL + tt.url
// Call Load and handle errors