@@ -119,8 +119,27 @@ func (c *Session) AuthToken() string {
119
119
//
120
120
// Generally Get or a wrapper function will be used instead of Do.
121
121
func (c * Session ) Do (req * Request ) (resp * Response , err error ) {
122
- // configure request
123
- req .AuthToken = c .Token
122
+ version := 0.0
123
+ if req .Method != "apiinfo.version" {
124
+ // get Zabbix API version
125
+ v , err := c .GetVersion ()
126
+ if err != nil {
127
+ return nil , fmt .Errorf ("Failed to retrieve Zabbix API version: %v" , err )
128
+ }
129
+
130
+ version , err = strconv .ParseFloat (v [0 :3 ], 64 )
131
+ if err != nil {
132
+ return nil , fmt .Errorf ("Failed to convert Zabbix version string to float: %v" , err )
133
+ }
134
+
135
+ if version < 6.4 {
136
+ // configure request
137
+ req .AuthToken = c .Token
138
+ } else {
139
+ // don't send deprecated auth parameter
140
+ req .AuthToken = ""
141
+ }
142
+ }
124
143
125
144
// encode request as json
126
145
b , err := json .Marshal (req )
@@ -138,6 +157,12 @@ func (c *Session) Do(req *Request) (resp *Response, err error) {
138
157
r .ContentLength = int64 (len (b ))
139
158
r .Header .Add ("Content-Type" , "application/json-rpc" )
140
159
160
+ if req .Method != "apiinfo.version" {
161
+ if version >= 6.4 {
162
+ r .Header .Add ("Authorization" , "Bearer " + c .Token )
163
+ }
164
+ }
165
+
141
166
// send request
142
167
client := c .client
143
168
if client == nil {
0 commit comments