Plugins: Add token to gcom requests (#96261)
This commit is contained in:
@@ -23,15 +23,17 @@ type Client struct {
|
||||
httpClient http.Client
|
||||
httpClientNoTimeout http.Client
|
||||
retryCount int
|
||||
grafanaComAPIToken string
|
||||
|
||||
log log.PrettyLogger
|
||||
}
|
||||
|
||||
func NewClient(skipTLSVerify bool, logger log.PrettyLogger) *Client {
|
||||
func NewClient(skipTLSVerify bool, grafanaComAPIToken string, logger log.PrettyLogger) *Client {
|
||||
return &Client{
|
||||
httpClient: MakeHttpClient(skipTLSVerify, 10*time.Second),
|
||||
httpClientNoTimeout: MakeHttpClient(skipTLSVerify, 0),
|
||||
log: logger,
|
||||
grafanaComAPIToken: grafanaComAPIToken,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,6 +155,14 @@ func (c *Client) downloadFile(ctx context.Context, tmpFile *os.File, pluginURL,
|
||||
// Note: This is also used as part of the grafana plugin install CLI operation
|
||||
bodyReader, err := c.sendReqNoTimeout(ctx, u, compatOpts)
|
||||
if err != nil {
|
||||
var errResp ErrResponse4xx
|
||||
if errors.As(err, &errResp) {
|
||||
if errResp.StatusCode() == 401 {
|
||||
c.log.Error("Unauthorized download plugin", "error", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if c.retryCount < 3 {
|
||||
c.retryCount++
|
||||
c.log.Debug("Failed downloading. Will retry.")
|
||||
@@ -223,6 +233,10 @@ func (c *Client) createReq(ctx context.Context, url *url.URL, compatOpts CompatO
|
||||
req.Header.Set("grafana-origin", orig.(string))
|
||||
}
|
||||
|
||||
if c.grafanaComAPIToken != "" {
|
||||
req.Header.Set("Authorization", "Bearer "+c.grafanaComAPIToken)
|
||||
}
|
||||
|
||||
return req, err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user