2021-07-05 05:20:12 -05:00
|
|
|
package azuremonitor
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend/httpclient"
|
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/aztokenprovider"
|
2022-03-02 08:41:07 -06:00
|
|
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/deprecated"
|
|
|
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/types"
|
2021-07-05 05:20:12 -05:00
|
|
|
)
|
|
|
|
|
2022-03-02 08:41:07 -06:00
|
|
|
func getMiddlewares(route types.AzRoute, model types.DatasourceInfo, cfg *setting.Cfg) ([]httpclient.Middleware, error) {
|
2021-07-16 05:47:26 -05:00
|
|
|
middlewares := []httpclient.Middleware{}
|
2021-07-05 05:20:12 -05:00
|
|
|
|
|
|
|
if len(route.Scopes) > 0 {
|
|
|
|
tokenProvider, err := aztokenprovider.NewAzureAccessTokenProvider(cfg, model.Credentials)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2021-07-16 05:47:26 -05:00
|
|
|
middlewares = append(middlewares, aztokenprovider.AuthMiddleware(tokenProvider, route.Scopes))
|
|
|
|
}
|
2021-07-05 05:20:12 -05:00
|
|
|
|
2022-03-02 08:41:07 -06:00
|
|
|
// Remove with Grafana 9
|
|
|
|
if apiKeyMiddleware := deprecated.GetAppInsightsMiddleware(route.URL, model.DecryptedSecureJSONData["appInsightsApiKey"]); apiKeyMiddleware != nil {
|
2021-07-16 05:47:26 -05:00
|
|
|
middlewares = append(middlewares, apiKeyMiddleware)
|
2021-07-05 05:20:12 -05:00
|
|
|
}
|
|
|
|
|
2021-07-16 05:47:26 -05:00
|
|
|
return middlewares, nil
|
2021-07-05 05:20:12 -05:00
|
|
|
}
|
|
|
|
|
2022-03-02 08:41:07 -06:00
|
|
|
func newHTTPClient(route types.AzRoute, model types.DatasourceInfo, cfg *setting.Cfg, clientProvider httpclient.Provider) (*http.Client, error) {
|
2021-07-16 05:47:26 -05:00
|
|
|
m, err := getMiddlewares(route, model, cfg)
|
2021-07-05 05:20:12 -05:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2021-07-16 05:47:26 -05:00
|
|
|
return clientProvider.New(httpclient.Options{
|
|
|
|
Headers: route.Headers,
|
|
|
|
Middlewares: m,
|
|
|
|
})
|
2021-07-05 05:20:12 -05:00
|
|
|
}
|