mirror of
https://github.com/MickMake/GoSungrow.git
synced 2025-05-08 19:00:15 +02:00
373 lines
10 KiB
Go
373 lines
10 KiB
Go
// Package queryDeviceList
|
|
// - This file is auto-generated from the update_all.sh script.
|
|
// Do not modify anything here. Any changes to this EndPoint should be made in the data.go file.
|
|
// The only exception is the AppService.login package.
|
|
package queryDeviceList
|
|
|
|
import (
|
|
"GoSungrow/iSolarCloud/api"
|
|
"GoSungrow/iSolarCloud/api/apiReflect"
|
|
"GoSungrow/iSolarCloud/api/output"
|
|
"github.com/MickMake/GoUnify/Only"
|
|
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
|
|
// api.EndPoint - Import API endpoint interface
|
|
var _ api.EndPoint = (*EndPoint)(nil)
|
|
|
|
// EndPoint - Holds the request, response and web method structures.
|
|
type EndPoint struct {
|
|
api.EndPointStruct
|
|
Request Request
|
|
Response Response
|
|
}
|
|
|
|
// Request - Holds the api.RequestCommon and user RequestData structures. See data.go for request fields.
|
|
type Request struct {
|
|
api.RequestCommon
|
|
RequestData
|
|
}
|
|
|
|
// Response - Holds the api.ResponseCommon and endpoint specific ResultData structures. See data.go for response fields.
|
|
type Response struct {
|
|
api.ResponseCommon
|
|
ResultData ResultData `json:"result_data"`
|
|
}
|
|
|
|
// Init - Used to initialize a new endpoint instance. Usually called from an area.
|
|
func Init(apiRoot api.Web) EndPoint {
|
|
return EndPoint{
|
|
EndPointStruct: api.EndPointStruct{
|
|
ApiRoot: apiRoot,
|
|
Area: api.GetArea(EndPoint{}),
|
|
Name: api.GetName(EndPoint{}),
|
|
Url: api.SetUrl(Url),
|
|
Request: Request{},
|
|
Response: Response{},
|
|
Error: nil,
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
// ******************************************************************************** //
|
|
|
|
// Methods not scoped by api.EndPoint interface type
|
|
|
|
// Init - If the endpoint needs to be re-initialized.
|
|
func (e EndPoint) Init(apiRoot api.Web) *EndPoint {
|
|
ret := Init(apiRoot)
|
|
return &ret
|
|
}
|
|
|
|
// GetRequest - Get the Request structure as scoped by this endpoint.
|
|
func (e EndPoint) GetRequest() Request {
|
|
return e.Request
|
|
}
|
|
|
|
// GetResponse - Get the Response structure as scoped by this endpoint.
|
|
func (e EndPoint) GetResponse() Response {
|
|
return e.Response
|
|
}
|
|
|
|
// Assert - Used to obtain locally scoped EndPoint methods, (not visible from api.EndPoint).
|
|
//goland:noinspection GoUnusedExportedFunction
|
|
func Assert(e api.EndPoint) EndPoint {
|
|
return e.(EndPoint)
|
|
}
|
|
|
|
// AssertResultData - Used to obtain locally scoped ResultData methods, (not visible from api.EndPoint).
|
|
//goland:noinspection GoUnusedExportedFunction
|
|
func AssertResultData(e api.EndPoint) ResultData {
|
|
return e.(EndPoint).Response.ResultData
|
|
}
|
|
|
|
|
|
// ******************************************************************************** //
|
|
|
|
// Methods defined by api.EndPoint interface type
|
|
|
|
// Help - Return help information on the JSON structure used to populate RequestData.
|
|
func (e EndPoint) Help() string {
|
|
ret := apiReflect.HelpOptions(e.Request.RequestData)
|
|
ret += fmt.Sprintf("JSON request:\t%s\n", e.GetRequestJson())
|
|
ret += e.Request.Help()
|
|
return ret
|
|
}
|
|
|
|
// IsDisabled - Is this endpoint disabled? See data.go Disabled constant.
|
|
func (e EndPoint) IsDisabled() bool {
|
|
return Disabled
|
|
}
|
|
|
|
// GetArea - Returns the API area that this EndPoint is located.
|
|
func (e EndPoint) GetArea() api.AreaName {
|
|
return e.Area
|
|
}
|
|
|
|
// GetName - Returns the API EndPoint name.
|
|
func (e EndPoint) GetName() api.EndPointName {
|
|
return e.Name
|
|
}
|
|
|
|
// GetUrl - Returns the API EndPoint url.
|
|
func (e EndPoint) GetUrl() api.EndPointUrl {
|
|
return e.Url
|
|
}
|
|
|
|
// Call - Once RequestData is populated, this will access the iSolarCloud API and populate ResultData.
|
|
func (e EndPoint) Call() api.EndPoint {
|
|
return e.ApiRoot.Get(e)
|
|
}
|
|
|
|
// GetJsonData - Get the JSON representation of ResultData, either as condensed or "pretty".
|
|
func (e EndPoint) GetJsonData(raw bool) output.Json {
|
|
if raw {
|
|
return output.Json(e.RawResponse)
|
|
// return output.Json(e.ApiRoot.Body)
|
|
} else {
|
|
return output.GetAsPrettyJson(e.Response.ResultData)
|
|
}
|
|
}
|
|
|
|
// SetError - Set the error code for this EndPoint.
|
|
func (e EndPoint) SetError(format string, a ...interface{}) api.EndPoint {
|
|
e.EndPointStruct.Error = errors.New(fmt.Sprintf(format, a...))
|
|
return e
|
|
}
|
|
|
|
// GetError - Get the error code for this EndPoint.
|
|
func (e EndPoint) GetError() error {
|
|
return e.EndPointStruct.Error
|
|
}
|
|
|
|
// IsError - Is there an error?
|
|
func (e EndPoint) IsError() bool {
|
|
if e.Error != nil {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// ReadDataFile - Read a JSON file and populate the ResultData structure.
|
|
// (File names will default to AREA-ENDPOINT.json )
|
|
func (e EndPoint) ReadDataFile() error {
|
|
// return e.FileRead("", &e.Response.ResultData)
|
|
return e.ApiReadDataFile(&e.Response.ResultData)
|
|
}
|
|
|
|
// WriteDataFile - Write to a file, the contents of ResultData as JSON.
|
|
// (File names will default to AREA-ENDPOINT.json )
|
|
func (e EndPoint) WriteDataFile() error {
|
|
// return e.FileWrite("", e.Response.ResultData, output.DefaultFileMode)
|
|
return e.ApiWriteDataFile(e.Response.ResultData)
|
|
}
|
|
|
|
|
|
// ********************************************************************************
|
|
|
|
// SetRequest - Save an interface reference as either api.RequestCommon or RequestData.
|
|
func (e EndPoint) SetRequest(ref interface{}) api.EndPoint {
|
|
for range Only.Once {
|
|
if apiReflect.GetPkgType(ref) == "api.RequestCommon" {
|
|
e.Request.RequestCommon = ref.(api.RequestCommon)
|
|
break
|
|
}
|
|
|
|
if apiReflect.GetType(ref) == "RequestData" {
|
|
e.Request.RequestData = ref.(RequestData)
|
|
e.Error = e.IsRequestValid()
|
|
break
|
|
}
|
|
|
|
e.Error = apiReflect.DoPkgTypesMatch(e.Request, ref)
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
|
|
e.Request = ref.(Request)
|
|
}
|
|
return e
|
|
}
|
|
|
|
// SetRequestByJson - Save RequestData from a JSON string.
|
|
func (e EndPoint) SetRequestByJson(j output.Json) api.EndPoint {
|
|
for range Only.Once {
|
|
e.Error = json.Unmarshal([]byte(j), &e.Request.RequestData)
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
e.Error = e.IsRequestValid()
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
}
|
|
return e
|
|
}
|
|
|
|
// RequestRef - Return the locally scoped Request structure.
|
|
func (e EndPoint) RequestRef() interface{} {
|
|
return e.Request
|
|
}
|
|
|
|
// GetRequestJson - Return the Request structure as a JSON string.
|
|
func (e EndPoint) GetRequestJson() output.Json {
|
|
return output.GetAsJson(e.Request.RequestData)
|
|
}
|
|
|
|
// // GetFingerprint - Used to formulate cache filenames.
|
|
// func (e EndPoint) GetFingerprint() string {
|
|
// return apiReflect.GetFingerprint(e.Request.RequestData)
|
|
// }
|
|
|
|
// IsRequestValid - Is api.RequestCommon and RequestData valid?
|
|
func (e EndPoint) IsRequestValid() error {
|
|
for range Only.Once {
|
|
// req := e.GetRequest()
|
|
// req := e.Request.RequestCommon
|
|
e.Error = e.Request.RequestCommon.IsValid()
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
e.Error = e.Request.RequestData.IsValid()
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
}
|
|
return e.Error
|
|
}
|
|
|
|
|
|
// ********************************************************************************
|
|
|
|
// SetResponse - Save a JSON string to the Response structure.
|
|
// (Used by the web call method.)
|
|
func (e EndPoint) SetResponse(ref []byte) api.EndPoint {
|
|
for range Only.Once {
|
|
e.RawResponse = ref
|
|
e.Error = json.Unmarshal(ref, &e.Response)
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
}
|
|
return e
|
|
}
|
|
|
|
// GetResponseJson - Return the Response structure as a JSON string.
|
|
func (e EndPoint) GetResponseJson() output.Json {
|
|
return output.GetAsPrettyJson(e.Response)
|
|
}
|
|
|
|
// ResponseRef - Return the locally scoped Response structure.
|
|
func (e EndPoint) ResponseRef() interface{} {
|
|
return e.Response
|
|
}
|
|
|
|
// IsResponseValid - Is api.ResponseCommon and ResultData valid?
|
|
func (e EndPoint) IsResponseValid() error {
|
|
for range Only.Once {
|
|
e.Error = e.Response.ResponseCommon.IsValid()
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
e.Error = e.Response.ResultData.IsValid()
|
|
if e.Error != nil {
|
|
break
|
|
}
|
|
}
|
|
return e.Error
|
|
}
|
|
|
|
// String - Stringer method for this EndPoint.
|
|
func (e EndPoint) String() string {
|
|
return output.GetEndPointString(e)
|
|
}
|
|
|
|
// RequestString - Return the Request structure as a human-readable string.
|
|
func (e EndPoint) RequestString() string {
|
|
return output.GetRequestString(e.Request)
|
|
}
|
|
|
|
// ResponseString - Return the Response structure as a human-readable string.
|
|
func (e EndPoint) ResponseString() string {
|
|
return output.GetRequestString(e.Response)
|
|
}
|
|
|
|
|
|
// ********************************************************************************
|
|
|
|
// MarshalJSON - Marshall the EndPoint.
|
|
func (e EndPoint) MarshalJSON() ([]byte, error) {
|
|
return api.MarshalJSON(e)
|
|
|
|
// return json.Marshal(&struct {
|
|
// Area string `json:"area"`
|
|
// EndPoint string `json:"endpoint"`
|
|
// Host string `json:"api_host"`
|
|
// Url string `json:"endpoint_url"`
|
|
// Request interface{} `json:"request"`
|
|
// Response interface{} `json:"response"`
|
|
// }{
|
|
// Area: string(e.Area),
|
|
// EndPoint: string(e.Name),
|
|
// Host: e.ApiRoot.Url.String(),
|
|
// Url: e.Url.String(),
|
|
// Request: e.Request,
|
|
// Response: e.Response,
|
|
// })
|
|
}
|
|
|
|
|
|
// ********************************************************************************
|
|
|
|
// RequestFingerprint - Check if a cache file exists for this EndPoint.
|
|
func (e EndPoint) RequestFingerprint() string {
|
|
return e.ApiFingerprint(e.Request.RequestData)
|
|
}
|
|
|
|
// CacheFilename - Check if a cache file exists for this EndPoint.
|
|
func (e EndPoint) CacheFilename() string {
|
|
return e.ApiCacheFilename(e.Request.RequestData)
|
|
}
|
|
|
|
// // CheckCache - Check if a cache file exists for this EndPoint.
|
|
// func (e EndPoint) CheckCache() bool {
|
|
// return e.ApiCheckCache(e.Request.RequestData)
|
|
// }
|
|
//
|
|
// // ReadCache - Read a cache file and return it as an EndPoint structure.
|
|
// func (e EndPoint) ReadCache() api.EndPoint {
|
|
// e.Error = e.ApiReadCache(e.Request.RequestData, &e)
|
|
// return e
|
|
// }
|
|
//
|
|
// // WriteCache - Write this EndPoint structure out to a cache file.
|
|
// func (e EndPoint) WriteCache() error {
|
|
// return e.ApiWriteCache(e.Request.RequestData, e)
|
|
// }
|
|
|
|
// SetCacheTimeout - Set the cache timeout for this EndPoint. (Defaults to 1 hour.)
|
|
func (e EndPoint) SetCacheTimeout(duration time.Duration) api.EndPoint {
|
|
e.ApiRoot.SetCacheTimeout(duration)
|
|
return e
|
|
}
|
|
|
|
// GetCacheTimeout - Return the cache timeout for this EndPoint.
|
|
func (e EndPoint) GetCacheTimeout() time.Duration {
|
|
return e.ApiRoot.GetCacheTimeout()
|
|
}
|
|
|
|
|
|
func (e EndPoint) GetEndPointData() api.DataMap {
|
|
return e.GetData()
|
|
}
|
|
|
|
func (e EndPoint) GetEndPointDataTable() output.Table {
|
|
return e.ApiRoot.GetDataTable(e)
|
|
}
|