package main import ( "context" "crypto/tls" "encoding/json" "fmt" "net/http" "net/url" "strings" "github.com/AFASystems/presence/internal/pkg/model" ) type response struct { A string `json:"access_token"` } func main() { ctx := context.Background() tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} formData := url.Values{} formData.Set("grant_type", "password") formData.Set("client_id", "Fastapi") formData.Set("client_secret", "wojuoB7Z5xhlPFrF2lIxJSSdVHCApEgC") formData.Set("username", "core") formData.Set("password", "C0r3_us3r_Cr3d3nt14ls") formData.Set("audience", "Fastapi") req, err := http.NewRequest("POST", "https://10.251.0.30:10002/realms/API.Server.local/protocol/openid-connect/token", strings.NewReader(formData.Encode())) if err != nil { panic(err) } req.Header.Add("Content-Type", "application/x-www-form-urlencoded") req = req.WithContext(ctx) res, err := client.Do(req) if err != nil { panic(err) } var j response err = json.NewDecoder(res.Body).Decode(&j) if err != nil { panic(err) } token := j.A trackers, err := GetTrackers(token, client) if err != nil { panic(err) } fmt.Printf("trackers: %+v\n", trackers) gateways, err := getGateways(token, client) if err != nil { panic(err) } fmt.Printf("gateways: %+v\n", gateways) zones, err := GetZones(token, client) if err != nil { panic(err) } fmt.Printf("zones: %+v\n", zones) trackerZones, err := GetTrackerZones(token, client) if err != nil { panic(err) } fmt.Printf("tracker zones: %+v\n", trackerZones) } func GetTrackers(token string, client *http.Client) ([]model.Tracker, error) { res, err := getRequest(token, "getTrackers", client) if err != nil { return nil, err } var i []model.Tracker err = json.NewDecoder(res.Body).Decode(&i) if err != nil { return nil, err } return i, nil } func getGateways(token string, client *http.Client) ([]model.Gateway, error) { res, err := getRequest(token, "getGateways", client) if err != nil { return nil, err } var i []model.Gateway err = json.NewDecoder(res.Body).Decode(&i) if err != nil { return nil, err } return i, nil } func GetTrackerZones(token string, client *http.Client) ([]model.TrackerZones, error) { res, err := getRequest(token, "getTrackerZones", client) if err != nil { return nil, err } var i []model.TrackerZones err = json.NewDecoder(res.Body).Decode(&i) if err != nil { return nil, err } return i, nil } func GetZones(token string, client *http.Client) ([]model.Zone, error) { res, err := getRequest(token, "getZones", client) if err != nil { return nil, err } var i []model.Zone err = json.NewDecoder(res.Body).Decode(&i) if err != nil { return nil, err } return i, nil } func getRequest(token, route string, client *http.Client) (*http.Response, error) { url := fmt.Sprintf("https://10.251.0.30:5050/reslevis/%s", route) req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } header := fmt.Sprintf("Bearer %s", token) req.Header.Add("Authorization", header) res, err := client.Do(req) if err != nil { return nil, err } return res, nil }