Skip to content

Commit 1ee473b

Browse files
Steven BarnesSteven Barnes
authored andcommitted
Authenticate to get existing index.yaml
1 parent a9e797b commit 1ee473b

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

pkg/releaser/releaser.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ type GitHub interface {
5454

5555
type HttpClient interface {
5656
Get(url string) (*http.Response, error)
57+
GetWithToken(url string, token string) (*http.Response, error)
5758
}
5859

5960
type Git interface {
@@ -77,6 +78,13 @@ func (c *DefaultHttpClient) Get(url string) (resp *http.Response, err error) {
7778
return http.Get(url)
7879
}
7980

81+
func (c *DefaultHttpClient) GetWithToken(url string, token string) (resp *http.Response, err error) {
82+
req, _ := http.NewRequest("GET", url, nil)
83+
req.Header.Add("Authorization", fmt.Sprintf("token %s", token))
84+
client := &http.Client{}
85+
return client.Do(req)
86+
}
87+
8088
type Releaser struct {
8189
config *config.Options
8290
github GitHub
@@ -108,10 +116,19 @@ func (r *Releaser) UpdateIndexFile() (bool, error) {
108116
}
109117

110118
var indexFile *repo.IndexFile
119+
var resp *http.Response
120+
var err error
111121

112-
resp, err := r.httpClient.Get(fmt.Sprintf("%s/index.yaml", r.config.ChartsRepo))
113-
if err != nil {
114-
return false, err
122+
if r.config.Token != "" {
123+
resp, err = r.httpClient.GetWithToken(fmt.Sprintf("%s/index.yaml", r.config.ChartsRepo), r.config.Token)
124+
if err != nil {
125+
return false, err
126+
}
127+
} else {
128+
resp, err = r.httpClient.Get(fmt.Sprintf("%s/index.yaml", r.config.ChartsRepo))
129+
if err != nil {
130+
return false, err
131+
}
115132
}
116133

117134
defer resp.Body.Close()

pkg/releaser/releaser_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@ func (m *MockClient) Get(url string) (*http.Response, error) {
5757
}
5858
}
5959

60+
func (m *MockClient) GetWithToken(url string, token string) (*http.Response, error) {
61+
if m.statusCode == http.StatusOK {
62+
file, _ := os.Open(m.file)
63+
reader := bufio.NewReader(file)
64+
return &http.Response{StatusCode: http.StatusOK, Body: ioutil.NopCloser(reader)}, nil
65+
} else {
66+
return &http.Response{StatusCode: http.StatusNotFound, Body: ioutil.NopCloser(nil)}, nil
67+
}
68+
}
69+
6070
func (f *FakeGitHub) CreateRelease(ctx context.Context, input *github.Release) error {
6171
f.Called(ctx, input)
6272
f.release = input

0 commit comments

Comments
 (0)