@@ -182,6 +182,27 @@ func NewRestHandler(host string, opts ...OptionRestHandler) *RestHandler {
182182// auth: alters the request to include auth token on true
183183func (rh * RestHandler ) Request (method string , payload interface {}, command string ) (* GeneralData , error ) {
184184
185+ params := url.Values {}
186+ params .Add ("cmd" , command )
187+
188+ respBody , err := rh .RequestRaw (method , payload , params )
189+
190+ if err != nil {
191+ return nil , err
192+ }
193+
194+ var result []* GeneralData
195+
196+ err = json .Unmarshal (respBody , & result )
197+
198+ if err != nil {
199+ return nil , err
200+ }
201+
202+ return result [0 ], nil
203+ }
204+
205+ func (rh * RestHandler ) RequestRaw (method string , payload interface {}, params url.Values ) ([]byte , error ) {
185206 var urlConcat string
186207 if rh .port > 0 {
187208 urlConcat = fmt .Sprintf ("%s:%d/%s" , rh .host , rh .port , rh .endpoint )
@@ -191,14 +212,12 @@ func (rh *RestHandler) Request(method string, payload interface{}, command strin
191212
192213 urlConcat = fmt .Sprintf ("%s://%s" , rh .scheme .String (), urlConcat )
193214
194- var data []byte
195-
196- params := url.Values {}
197215 params .Add ("token" , rh .token )
198- params .Add ("cmd" , command )
199216
200217 urlConcat = fmt .Sprintf ("%s?%s" , urlConcat , params .Encode ())
201218
219+ var data []byte
220+
202221 data , err := json .Marshal ([]interface {}{payload })
203222
204223 if err != nil {
@@ -309,20 +328,13 @@ func (rh *RestHandler) Request(method string, payload interface{}, command strin
309328 return nil , err
310329 }
311330
312- var result []* GeneralData
313331 body , err := ioutil .ReadAll (resp .Body )
314332
315333 if err != nil {
316334 return nil , err
317335 }
318336
319- err = json .Unmarshal (body , & result )
320-
321- if err != nil {
322- return nil , err
323- }
324-
325- return result [0 ], nil
337+ return body , nil
326338}
327339
328340// Set the current token
0 commit comments