fix expired token renewal

This commit is contained in:
Alexander Zobnin
2020-06-04 17:53:10 +03:00
parent 009158ecc5
commit 516b4f2045

View File

@@ -4,6 +4,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"regexp" "regexp"
"strings"
"time" "time"
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi" "github.com/alexanderzobnin/grafana-zabbix/pkg/zabbixapi"
@@ -96,7 +97,7 @@ func (ds *ZabbixDatasourceInstance) ZabbixRequest(ctx context.Context, method st
} }
result, err = ds.zabbixAPI.Request(ctx, method, params) result, err = ds.zabbixAPI.Request(ctx, method, params)
if err == zabbixapi.ErrNotAuthenticated { if err == zabbixapi.ErrNotAuthenticated || isNotAuthorized(err) {
err = ds.login(ctx) err = ds.login(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -530,3 +531,14 @@ func parseFilter(filter string) (*regexp.Regexp, error) {
return regexp.Compile(pattern) return regexp.Compile(pattern)
} }
func isNotAuthorized(err error) bool {
if err == nil {
return false
}
message := err.Error()
return strings.Contains(message, "Session terminated, re-login, please.") ||
strings.Contains(message, "Not authorised.") ||
strings.Contains(message, "Not authorized.")
}