Separate Zabbix API and HTTP client
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/gtime"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/gtime"
|
||||||
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/httpclient"
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
|
||||||
|
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||||
@@ -55,7 +56,12 @@ func newZabbixDatasourceInstance(settings backend.DataSourceInstanceSettings) (i
|
|||||||
return nil, err
|
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 {
|
if err != nil {
|
||||||
logger.Error("Error initializing Zabbix API", "error", err)
|
logger.Error("Error initializing Zabbix API", "error", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ var ptc = proxyTransportCache{
|
|||||||
cache: make(map[int64]cachedTransport),
|
cache: make(map[int64]cachedTransport),
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetHttpClient returns new http.Client. Transport either initialized or got from cache.
|
// NewHttpClient returns new http.Client. Transport either initialized or got from cache.
|
||||||
func GetHttpClient(ds *backend.DataSourceInstanceSettings, timeout time.Duration) (*http.Client, error) {
|
func NewHttpClient(ds *backend.DataSourceInstanceSettings, timeout time.Duration) (*http.Client, error) {
|
||||||
transport, err := getHttpTransport(ds)
|
transport, err := newHttpTransport(ds)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ func GetHttpClient(ds *backend.DataSourceInstanceSettings, timeout time.Duration
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHttpTransport(ds *backend.DataSourceInstanceSettings) (*dataSourceTransport, error) {
|
func newHttpTransport(ds *backend.DataSourceInstanceSettings) (*dataSourceTransport, error) {
|
||||||
ptc.Lock()
|
ptc.Lock()
|
||||||
defer ptc.Unlock()
|
defer ptc.Unlock()
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,8 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/httpclient"
|
|
||||||
"github.com/bitly/go-simplejson"
|
"github.com/bitly/go-simplejson"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||||
"golang.org/x/net/context/ctxhttp"
|
"golang.org/x/net/context/ctxhttp"
|
||||||
)
|
)
|
||||||
@@ -32,14 +29,9 @@ type ZabbixAPI struct {
|
|||||||
type ZabbixAPIParams = map[string]interface{}
|
type ZabbixAPIParams = map[string]interface{}
|
||||||
|
|
||||||
// New returns new ZabbixAPI instance initialized with given URL or error.
|
// 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()
|
apiLogger := log.New()
|
||||||
zabbixURL, err := url.Parse(dsInfo.URL)
|
zabbixURL, err := url.Parse(apiURL)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := httpclient.GetHttpClient(dsInfo, timeout)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user