mirror of
https://github.com/seriousm4x/UpSnap.git
synced 2026-03-31 06:24:09 -04:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package networking
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
|
|
"github.com/pocketbase/pocketbase/core"
|
|
"github.com/seriousm4x/upsnap/logger"
|
|
)
|
|
|
|
type SolResponse struct {
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
func SleepDevice(device *core.Record) (SolResponse, error) {
|
|
logger.Info.Println("Sleep triggered for", device.GetString("name"))
|
|
|
|
var solResp SolResponse
|
|
var url string
|
|
|
|
if device.GetBool("sol_auth") {
|
|
url = fmt.Sprintf("http://%s:%s@%s:%d/sleep?format=JSON",
|
|
device.GetString("sol_user"), device.GetString("sol_password"), device.GetString("ip"), device.GetInt("sol_port"))
|
|
} else {
|
|
url = fmt.Sprintf("http://%s:%d/sleep?format=JSON", device.GetString("ip"), device.GetInt("sol_port"))
|
|
}
|
|
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
return solResp, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
if resp.StatusCode != 200 {
|
|
body, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return solResp, err
|
|
}
|
|
|
|
var solResp SolResponse
|
|
if err := json.Unmarshal(body, &solResp); err != nil {
|
|
return solResp, err
|
|
}
|
|
|
|
return solResp, errors.New("status code was not 200")
|
|
}
|
|
|
|
return solResp, nil
|
|
}
|