Separate Zabbix API and HTTP client

This commit is contained in:
Alexander Zobnin
2021-05-19 09:49:12 +03:00
parent 68c7e20d27
commit 762ea252b2
3 changed files with 13 additions and 15 deletions

View File

@@ -8,6 +8,7 @@ import (
"time"
"github.com/alexanderzobnin/grafana-zabbix/pkg/gtime"
"github.com/alexanderzobnin/grafana-zabbix/pkg/httpclient"
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
"github.com/grafana/grafana-plugin-sdk-go/backend"
@@ -55,7 +56,12 @@ func newZabbixDatasourceInstance(settings backend.DataSourceInstanceSettings) (i
return nil, err
}
zabbixAPI, err := zabbixapi.New(&settings, zabbixSettings.Timeout)
client, err := httpclient.NewHttpClient(&settings, zabbixSettings.Timeout)
if err != nil {
return nil, err
}
zabbixAPI, err := zabbixapi.New(settings.URL, client)
if err != nil {
logger.Error("Error initializing Zabbix API", "error", err)
return nil, err

View File

@@ -46,9 +46,9 @@ var ptc = proxyTransportCache{
cache: make(map[int64]cachedTransport),
}
// GetHttpClient returns new http.Client. Transport either initialized or got from cache.
func GetHttpClient(ds *backend.DataSourceInstanceSettings, timeout time.Duration) (*http.Client, error) {
transport, err := getHttpTransport(ds)
// NewHttpClient returns new http.Client. Transport either initialized or got from cache.
func NewHttpClient(ds *backend.DataSourceInstanceSettings, timeout time.Duration) (*http.Client, error) {
transport, err := newHttpTransport(ds)
if err != nil {
return nil, err
}
@@ -61,7 +61,7 @@ func GetHttpClient(ds *backend.DataSourceInstanceSettings, timeout time.Duration
}, nil
}
func getHttpTransport(ds *backend.DataSourceInstanceSettings) (*dataSourceTransport, error) {
func newHttpTransport(ds *backend.DataSourceInstanceSettings) (*dataSourceTransport, error) {
ptc.Lock()
defer ptc.Unlock()

View File

@@ -9,11 +9,8 @@ import (
"io/ioutil"
"net/http"
"net/url"
"time"
"github.com/alexanderzobnin/grafana-zabbix/pkg/httpclient"
"github.com/bitly/go-simplejson"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
"golang.org/x/net/context/ctxhttp"
)
@@ -32,14 +29,9 @@ type ZabbixAPI struct {
type ZabbixAPIParams = map[string]interface{}
// New returns new ZabbixAPI instance initialized with given URL or error.
func New(dsInfo *backend.DataSourceInstanceSettings, timeout time.Duration) (*ZabbixAPI, error) {
func New(apiURL string, client *http.Client) (*ZabbixAPI, error) {
apiLogger := log.New()
zabbixURL, err := url.Parse(dsInfo.URL)
if err != nil {
return nil, err
}
client, err := httpclient.GetHttpClient(dsInfo, timeout)
zabbixURL, err := url.Parse(apiURL)
if err != nil {
return nil, err
}