|
- package apiclient
-
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "io"
- "net/http"
-
- "github.com/AFASystems/presence/internal/pkg/config"
- "github.com/AFASystems/presence/internal/pkg/model"
- )
-
- func GetTrackers(token string, client *http.Client, cfg *config.Config) ([]model.Tracker, error) {
- res, err := getRequest(token, "getTrackers", client, cfg)
- if err != nil {
- return []model.Tracker{}, err
- }
-
- var i []model.Tracker
- err = json.NewDecoder(res.Body).Decode(&i)
- if err != nil {
- return []model.Tracker{}, err
- }
-
- return i, nil
- }
-
- func GetGateways(token string, client *http.Client, cfg *config.Config) ([]model.Gateway, error) {
- res, err := getRequest(token, "getGateways", client, cfg)
- if err != nil {
- return []model.Gateway{}, err
- }
-
- body, err := io.ReadAll(res.Body)
- if err != nil {
- return []model.Gateway{}, err
- }
- fmt.Printf("Gateways raw response: %s\n", body)
-
- var i []model.Gateway
- err = json.NewDecoder(bytes.NewReader(body)).Decode(&i)
- if err != nil {
- return []model.Gateway{}, err
- }
-
- return i, nil
- }
-
- func GetTrackerZones(token string, client *http.Client, cfg *config.Config) ([]model.TrackerZones, error) {
- res, err := getRequest(token, "getTrackerZones", client, cfg)
- if err != nil {
- return []model.TrackerZones{}, err
- }
-
- var i []model.TrackerZones
- err = json.NewDecoder(res.Body).Decode(&i)
- if err != nil {
- return []model.TrackerZones{}, err
- }
-
- return i, nil
- }
-
- func GetFloors(token string, client *http.Client, cfg *config.Config) ([]model.Floor, error) {
- res, err := getRequest(token, "getFloors", client, cfg)
- if err != nil {
- return []model.Floor{}, err
- }
-
- var i []model.Floor
- err = json.NewDecoder(res.Body).Decode(&i)
- if err != nil {
- return []model.Floor{}, err
- }
-
- return i, nil
- }
-
- func GetZones(token string, client *http.Client, cfg *config.Config) ([]model.Zone, error) {
- res, err := getRequest(token, "getZones", client, cfg)
- if err != nil {
- return []model.Zone{}, err
- }
-
- var i []model.Zone
- err = json.NewDecoder(res.Body).Decode(&i)
- if err != nil {
- return []model.Zone{}, err
- }
-
- return i, nil
- }
-
- func InferPosition(token string, client *http.Client, cfg *config.Config) (model.PositionResponse, error) {
- url := fmt.Sprintf("%s/ble-ai/infer", cfg.APIBaseURL)
- req, err := http.NewRequest("GET", url, nil)
- if err != nil {
- return model.PositionResponse{}, err
- }
-
- setHeader(req, token)
-
- res, err := client.Do(req)
- if err != nil {
- return model.PositionResponse{}, err
- }
-
- if res.StatusCode != 200 {
- return model.PositionResponse{}, fmt.Errorf("status code: %d", res.StatusCode)
- }
-
- var i model.PositionResponse
- err = json.NewDecoder(res.Body).Decode(&i)
- if err != nil {
- return model.PositionResponse{}, err
- }
-
- return i, nil
- }
|