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.
120 lines
2.7 KiB
120 lines
2.7 KiB
package mill
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
func makeNonce() string {
|
|
buf := make([]byte, 8)
|
|
_, _ = io.ReadFull(rand.Reader, buf)
|
|
|
|
return fmt.Sprintf("%x", buf)
|
|
}
|
|
|
|
func addDefaultHeaders(req *http.Request) {
|
|
req.Header.Add("Content-Type", "application/x-zc-object")
|
|
req.Header.Add("Connection", "Keep-Alive")
|
|
req.Header.Add("X-Zc-Major-Domain", "seanywell")
|
|
req.Header.Add("X-Zc-Msg-Name", "millService")
|
|
req.Header.Add("X-Zc-Sub-Domain", "milltype")
|
|
req.Header.Add("X-Zc-Seq-Id", "1")
|
|
req.Header.Add("X-Zc-Version", "1")
|
|
}
|
|
|
|
var gen2subDomains = []int{863, 5316, 5317, 5332, 5333, 6933}
|
|
|
|
func subDomainToGeneration(subDomain int) int {
|
|
for _, gen2sd := range gen2subDomains {
|
|
if subDomain == gen2sd {
|
|
return 2
|
|
}
|
|
}
|
|
|
|
return 3
|
|
}
|
|
|
|
const accountEndpoint = "https://eurouter.ablecloud.cn:9005/zc-account/v1/"
|
|
|
|
const serviceEndpoint = "https://eurouter.ablecloud.cn:9005/millService/v1/"
|
|
|
|
type millHome struct {
|
|
HomeID int64 `json:"homeId"`
|
|
HomeName string `json:"homeName"`
|
|
}
|
|
|
|
type millDevice struct {
|
|
DeviceID int `json:"deviceId"`
|
|
DeviceName string `json:"deviceName"`
|
|
PowerStatus int `json:"powerStatus"`
|
|
HolidayTemp int `json:"holidayTemp"`
|
|
CurrentTemp float64 `json:"currentTemp"`
|
|
SubDomainID int `json:"subDomainId"`
|
|
}
|
|
|
|
type authReqBody struct {
|
|
Account string `json:"account"`
|
|
Password string `json:"password"`
|
|
}
|
|
|
|
type authResBody struct {
|
|
Token string `json:"token"`
|
|
UserID int `json:"userId"`
|
|
NickName string `json:"nickName"`
|
|
TokenExpire string `json:"tokenExpire"`
|
|
}
|
|
|
|
type listHomeReqBody struct{}
|
|
|
|
type listHomeResBody struct {
|
|
HomeList []millHome `json:"homeList"`
|
|
}
|
|
|
|
type listDeviceReqBody struct {
|
|
HomeID int64 `json:"homeId"`
|
|
}
|
|
|
|
type listDeviceResBody struct {
|
|
DeviceInfo []millDevice `json:"deviceInfo"`
|
|
}
|
|
|
|
type changeInfoReqBody struct {
|
|
HomeType int `json:"homeType"`
|
|
DeviceID int `json:"deviceId"`
|
|
Value int `json:"value"`
|
|
TimeZoneNum string `json:"timeZoneNum"`
|
|
Key string `json:"key"`
|
|
}
|
|
|
|
type deviceControlReqBody struct {
|
|
SubDomain string `json:"subDomain"`
|
|
DeviceID int `json:"deviceId"`
|
|
TestStatus int `json:"testStatus"`
|
|
Operation int `json:"operation"`
|
|
Status int `json:"status"`
|
|
WindStatus int `json:"windStatus"`
|
|
TempType int `json:"tempType"`
|
|
PowerLevel int `json:"powerLevel"`
|
|
}
|
|
|
|
type deviceControlGen3Body struct {
|
|
Operation string `json:"operation"`
|
|
Status int `json:"status"`
|
|
SubDomain int `json:"subDomain"`
|
|
DeviceId int `json:"deviceId"`
|
|
HoldTemp int `json:"holdTemp,omitempty"`
|
|
}
|
|
|
|
var location *time.Location
|
|
|
|
func init() {
|
|
myLocation, err := time.LoadLocation("Europe/Oslo")
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
location = myLocation
|
|
}
|