2022-10-15 05:14:39 +11:00

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)
}