Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

162 wiersze
3.2 KiB

  1. package main
  2. import (
  3. "context"
  4. "crypto/tls"
  5. "encoding/json"
  6. "fmt"
  7. "net/http"
  8. "net/url"
  9. "strings"
  10. "github.com/AFASystems/presence/internal/pkg/model"
  11. )
  12. type response struct {
  13. A string `json:"access_token"`
  14. }
  15. func main() {
  16. ctx := context.Background()
  17. tr := &http.Transport{
  18. TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
  19. }
  20. client := &http.Client{Transport: tr}
  21. formData := url.Values{}
  22. formData.Set("grant_type", "password")
  23. formData.Set("client_id", "Fastapi")
  24. formData.Set("client_secret", "wojuoB7Z5xhlPFrF2lIxJSSdVHCApEgC")
  25. formData.Set("username", "core")
  26. formData.Set("password", "C0r3_us3r_Cr3d3nt14ls")
  27. formData.Set("audience", "Fastapi")
  28. req, err := http.NewRequest("POST", "https://10.251.0.30:10002/realms/API.Server.local/protocol/openid-connect/token", strings.NewReader(formData.Encode()))
  29. if err != nil {
  30. panic(err)
  31. }
  32. req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  33. req = req.WithContext(ctx)
  34. res, err := client.Do(req)
  35. if err != nil {
  36. panic(err)
  37. }
  38. var j response
  39. err = json.NewDecoder(res.Body).Decode(&j)
  40. if err != nil {
  41. panic(err)
  42. }
  43. token := j.A
  44. trackers, err := GetTrackers(token, client)
  45. if err != nil {
  46. panic(err)
  47. }
  48. fmt.Printf("trackers: %+v\n", trackers)
  49. gateways, err := getGateways(token, client)
  50. if err != nil {
  51. panic(err)
  52. }
  53. fmt.Printf("gateways: %+v\n", gateways)
  54. zones, err := GetZones(token, client)
  55. if err != nil {
  56. panic(err)
  57. }
  58. fmt.Printf("zones: %+v\n", zones)
  59. trackerZones, err := GetTrackerZones(token, client)
  60. if err != nil {
  61. panic(err)
  62. }
  63. fmt.Printf("tracker zones: %+v\n", trackerZones)
  64. }
  65. func GetTrackers(token string, client *http.Client) ([]model.Tracker, error) {
  66. res, err := getRequest(token, "getTrackers", client)
  67. if err != nil {
  68. return nil, err
  69. }
  70. var i []model.Tracker
  71. err = json.NewDecoder(res.Body).Decode(&i)
  72. if err != nil {
  73. return nil, err
  74. }
  75. return i, nil
  76. }
  77. func getGateways(token string, client *http.Client) ([]model.Gateway, error) {
  78. res, err := getRequest(token, "getGateways", client)
  79. if err != nil {
  80. return nil, err
  81. }
  82. var i []model.Gateway
  83. err = json.NewDecoder(res.Body).Decode(&i)
  84. if err != nil {
  85. return nil, err
  86. }
  87. return i, nil
  88. }
  89. func GetTrackerZones(token string, client *http.Client) ([]model.TrackerZones, error) {
  90. res, err := getRequest(token, "getTrackerZones", client)
  91. if err != nil {
  92. return nil, err
  93. }
  94. var i []model.TrackerZones
  95. err = json.NewDecoder(res.Body).Decode(&i)
  96. if err != nil {
  97. return nil, err
  98. }
  99. return i, nil
  100. }
  101. func GetZones(token string, client *http.Client) ([]model.Zone, error) {
  102. res, err := getRequest(token, "getZones", client)
  103. if err != nil {
  104. return nil, err
  105. }
  106. var i []model.Zone
  107. err = json.NewDecoder(res.Body).Decode(&i)
  108. if err != nil {
  109. return nil, err
  110. }
  111. return i, nil
  112. }
  113. func getRequest(token, route string, client *http.Client) (*http.Response, error) {
  114. url := fmt.Sprintf("https://10.251.0.30:5050/reslevis/%s", route)
  115. req, err := http.NewRequest("GET", url, nil)
  116. if err != nil {
  117. return nil, err
  118. }
  119. header := fmt.Sprintf("Bearer %s", token)
  120. req.Header.Add("Authorization", header)
  121. res, err := client.Do(req)
  122. if err != nil {
  123. return nil, err
  124. }
  125. return res, nil
  126. }