Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

114 строки
2.7 KiB

  1. package apiclient
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io"
  6. "net/http"
  7. "github.com/AFASystems/presence/internal/pkg/config"
  8. "github.com/AFASystems/presence/internal/pkg/model"
  9. )
  10. func GetTrackers(token string, client *http.Client, cfg *config.Config) ([]model.Tracker, error) {
  11. res, err := getRequest(token, "getTrackers", client, cfg)
  12. if err != nil {
  13. fmt.Printf("error get trackers: %+v\n", err)
  14. return []model.Tracker{}, err
  15. }
  16. bodyBytes, err := io.ReadAll(res.Body)
  17. if err != nil {
  18. fmt.Printf("error read body: %+v\n", err)
  19. return []model.Tracker{}, err
  20. }
  21. fmt.Printf("body: %s\n", string(bodyBytes))
  22. var i []model.Tracker
  23. err = json.NewDecoder(res.Body).Decode(&i)
  24. if err != nil {
  25. fmt.Printf("error decode trackers: %+v\n", err)
  26. return []model.Tracker{}, err
  27. }
  28. return i, nil
  29. }
  30. func GetGateways(token string, client *http.Client, cfg *config.Config) ([]model.Gateway, error) {
  31. res, err := getRequest(token, "getGateways", client, cfg)
  32. if err != nil {
  33. fmt.Printf("error get gateways: %+v\n", err)
  34. return []model.Gateway{}, err
  35. }
  36. var i []model.Gateway
  37. err = json.NewDecoder(res.Body).Decode(&i)
  38. if err != nil {
  39. return []model.Gateway{}, err
  40. }
  41. return i, nil
  42. }
  43. func GetTrackerZones(token string, client *http.Client, cfg *config.Config) ([]model.TrackerZones, error) {
  44. res, err := getRequest(token, "getTrackerZones", client, cfg)
  45. if err != nil {
  46. return []model.TrackerZones{}, err
  47. }
  48. var i []model.TrackerZones
  49. err = json.NewDecoder(res.Body).Decode(&i)
  50. if err != nil {
  51. return []model.TrackerZones{}, err
  52. }
  53. return i, nil
  54. }
  55. func GetZones(token string, client *http.Client, cfg *config.Config) ([]model.Zone, error) {
  56. res, err := getRequest(token, "getZones", client, cfg)
  57. if err != nil {
  58. return []model.Zone{}, err
  59. }
  60. var i []model.Zone
  61. err = json.NewDecoder(res.Body).Decode(&i)
  62. if err != nil {
  63. return []model.Zone{}, err
  64. }
  65. return i, nil
  66. }
  67. func InferPosition(token string, client *http.Client, cfg *config.Config) (model.PositionResponse, error) {
  68. url := fmt.Sprintf("%s/ble-ai/infer", cfg.APIBaseURL)
  69. req, err := http.NewRequest("GET", url, nil)
  70. if err != nil {
  71. fmt.Printf("error new request: %+v\n", err)
  72. return model.PositionResponse{}, err
  73. }
  74. setHeader(req, token)
  75. res, err := client.Do(req)
  76. if err != nil {
  77. fmt.Printf("error do request: %+v\n", err)
  78. return model.PositionResponse{}, err
  79. }
  80. fmt.Printf("res.status: %s\n", res.Status)
  81. if res.StatusCode != 200 {
  82. fmt.Printf("error status code: %d\n", res.StatusCode)
  83. return model.PositionResponse{}, fmt.Errorf("status code: %d", res.StatusCode)
  84. }
  85. var i model.PositionResponse
  86. err = json.NewDecoder(res.Body).Decode(&i)
  87. if err != nil {
  88. fmt.Printf("error decode response: %+v\n", err)
  89. return model.PositionResponse{}, err
  90. }
  91. return i, nil
  92. }