You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 lines
2.2 KiB

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