Files
portainer/api/intel/openamt/authorization.go
T

58 lines
1.3 KiB
Go

package openamt
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net/http"
)
type authenticationResponse struct {
Token string `json:"token"`
}
func (service *Service) executeOpenAMTAuthenticationRequest() (*authenticationResponse, error) {
loginURL := fmt.Sprintf("%v/mps/login/api/v1/authorize", MPS_SERVER_ADDRESS)
// TODO where to retrieve this from? autogenerated?
payload := map[string]string{
"username": "admin",
"password": "chelo.Port2021",
}
jsonValue, _ := json.Marshal(payload)
req, err := http.NewRequest(http.MethodPost, loginURL, bytes.NewBuffer(jsonValue))
req.Header.Set("Content-Type", "application/json")
response, err := service.httpsClient.Do(req)
if err != nil {
return nil, err
}
responseBody, readErr := ioutil.ReadAll(response.Body)
if readErr != nil {
return nil, readErr
}
var errorResponse errorResponse
err = json.Unmarshal(responseBody, &errorResponse)
if err != nil {
return nil, err
}
if len(errorResponse.Errors) > 0 {
return nil, errors.New(errorResponse.Errors[0].ErrorMsg)
}
if errorResponse.ErrorMsg != "" {
return nil, errors.New(errorResponse.ErrorMsg)
}
var token authenticationResponse
err = json.Unmarshal(responseBody, &token)
if err != nil {
return nil, err
}
return &token, nil
}