Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

120 rindas
2.6 KiB

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