GoSungrow/cmd/cmd_data.go

252 lines
10 KiB
Go
Raw Permalink Normal View History

2022-02-23 22:02:35 +11:00
package cmd
import (
"github.com/MickMake/GoSungrow/iSolarCloud"
"github.com/MickMake/GoSungrow/iSolarCloud/api/GoStruct/output"
2022-02-23 22:02:35 +11:00
"fmt"
2022-11-28 22:27:18 +11:00
"github.com/MickMake/GoUnify/Only"
2022-10-07 23:12:47 +11:00
"github.com/MickMake/GoUnify/cmdHelp"
2022-02-23 22:02:35 +11:00
"github.com/spf13/cobra"
)
2022-10-07 23:12:47 +11:00
//goland:noinspection GoNameStartsWithPackageName
type CmdData CmdDefault
func NewCmdData() *CmdData {
var ret *CmdData
for range Only.Once {
ret = &CmdData{
Error: nil,
cmd: nil,
SelfCmd: nil,
}
2022-02-25 18:14:08 +11:00
}
2022-10-07 23:12:47 +11:00
return ret
}
2022-02-25 18:14:08 +11:00
2022-10-07 23:12:47 +11:00
func (c *CmdData) AttachCommand(cmd *cobra.Command) *cobra.Command {
for range Only.Once {
if cmd == nil {
break
}
c.cmd = cmd
// ******************************************************************************** //
c.SelfCmd = &cobra.Command{
Use: "data",
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Mid-level access to the Sungrow api."),
Long: fmt.Sprintf("Mid-level access to the Sungrow api."),
2022-10-07 23:12:47 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-10-13 16:51:32 +11:00
RunE: func(cmd *cobra.Command, args []string) error {
2022-10-07 23:12:47 +11:00
return cmd.Help()
},
2022-10-13 16:51:32 +11:00
Args: cobra.MinimumNArgs(0),
2022-10-07 23:12:47 +11:00
}
cmd.AddCommand(c.SelfCmd)
c.SelfCmd.Example = cmdHelp.PrintExamples(c.SelfCmd, "get <endpoint>", "put <endpoint>")
2022-10-13 16:51:32 +11:00
// ******************************************************************************** //
2022-10-07 23:12:47 +11:00
var cmdDataGet = &cobra.Command{
2022-11-02 20:23:44 +11:00
Use: output.StringTypeList + " <[area.]endpoint> [endpoint args ...]",
Aliases: []string{"get"},
2022-10-07 23:12:47 +11:00
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (list)"),
Long: fmt.Sprintf("Get data from the Sungrow api (list)"),
2022-10-07 23:12:47 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-10-13 16:51:32 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
2022-10-07 23:12:47 +11:00
}
c.SelfCmd.AddCommand(cmdDataGet)
2022-10-24 22:21:50 +11:00
cmdDataGet.Example = cmdHelp.PrintExamples(cmdDataGet, "queryDeviceList", "WebAppService.showPSView", "stats")
2022-10-07 23:12:47 +11:00
// ******************************************************************************** //
2022-11-02 20:23:44 +11:00
var cmdDataTable = &cobra.Command{
Use: output.StringTypeTable + " <[area.]endpoint> [endpoint args ...]",
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (table)"),
Long: fmt.Sprintf("Get data from the Sungrow api (table)"),
2022-11-02 20:23:44 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-11-02 20:23:44 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
}
c.SelfCmd.AddCommand(cmdDataTable)
cmdDataGet.Example = cmdHelp.PrintExamples(cmdDataTable, "queryDeviceList", "WebAppService.showPSView", "stats")
// ******************************************************************************** //
2022-10-07 23:12:47 +11:00
var cmdDataRaw = &cobra.Command{
2022-11-02 20:23:44 +11:00
Use: output.StringTypeRaw + " <[area.]endpoint> [endpoint args ...]",
2022-10-07 23:12:47 +11:00
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (raw)"),
Long: fmt.Sprintf("Get data from the Sungrow api (raw)"),
2022-10-07 23:12:47 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-10-13 16:51:32 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
2022-10-07 23:12:47 +11:00
}
c.SelfCmd.AddCommand(cmdDataRaw)
cmdDataRaw.Example = cmdHelp.PrintExamples(cmdDataRaw, "queryDeviceList", "WebAppService.showPSView", "stats")
2022-10-07 23:12:47 +11:00
// ******************************************************************************** //
2022-10-07 23:12:47 +11:00
var cmdDataJson = &cobra.Command{
2022-11-02 20:23:44 +11:00
Use: output.StringTypeJson + " <[area.]endpoint> [endpoint args ...]",
2022-10-07 23:12:47 +11:00
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (json)"),
Long: fmt.Sprintf("Get data from the Sungrow api (json)"),
2022-10-07 23:12:47 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-10-13 16:51:32 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
2022-10-07 23:12:47 +11:00
}
c.SelfCmd.AddCommand(cmdDataJson)
2022-10-24 22:21:50 +11:00
cmdDataJson.Example = cmdHelp.PrintExamples(cmdDataJson, "queryDeviceList", "WebAppService.showPSView", "stats")
2022-10-07 23:12:47 +11:00
// ******************************************************************************** //
2022-10-07 23:12:47 +11:00
var cmdDataCsv = &cobra.Command{
2022-11-02 20:23:44 +11:00
Use: output.StringTypeCsv + " <[area.]endpoint> [endpoint args ...]",
2022-10-07 23:12:47 +11:00
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (csv)"),
Long: fmt.Sprintf("Get data from the Sungrow api (csv)"),
2022-10-07 23:12:47 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-10-13 16:51:32 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
2022-10-07 23:12:47 +11:00
}
c.SelfCmd.AddCommand(cmdDataCsv)
2022-10-24 22:21:50 +11:00
cmdDataCsv.Example = cmdHelp.PrintExamples(cmdDataCsv, "queryDeviceList", "WebAppService.showPSView", "stats")
2022-10-07 23:12:47 +11:00
// ******************************************************************************** //
2022-10-07 23:12:47 +11:00
var cmdDataGraph = &cobra.Command{
2022-11-02 20:23:44 +11:00
Use: output.StringTypeGraph + " <[area.]endpoint> [endpoint args ...]",
2022-10-07 23:12:47 +11:00
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (graph)"),
Long: fmt.Sprintf("Get data from the Sungrow api (graph)"),
2022-10-07 23:12:47 +11:00
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-10-13 16:51:32 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
2022-10-07 23:12:47 +11:00
}
c.SelfCmd.AddCommand(cmdDataGraph)
2022-10-24 22:21:50 +11:00
cmdDataGraph.Example = cmdHelp.PrintExamples(cmdDataGraph, "queryDeviceList", "WebAppService.showPSView", "stats")
2022-11-28 22:27:18 +11:00
// ******************************************************************************** //
var cmdApiXML = &cobra.Command{
Use: output.StringTypeXML + " <[area.]endpoint> [endpoint args ...]",
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (xml)"),
Long: fmt.Sprintf("Get data from the Sungrow api (xml)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
}
c.SelfCmd.AddCommand(cmdApiXML)
cmdApiXML.Example = cmdHelp.PrintExamples(cmdApiXML, "queryDeviceList", "WebAppService.showPSView")
// ******************************************************************************** //
var cmdApiXLSX = &cobra.Command{
Use: output.StringTypeXLSX + " <[area.]endpoint> [endpoint args ...]",
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
2022-12-05 21:33:52 +11:00
Short: fmt.Sprintf("Get data from the Sungrow api (XLSX)"),
Long: fmt.Sprintf("Get data from the Sungrow api (XLSX)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
}
c.SelfCmd.AddCommand(cmdApiXLSX)
cmdApiXLSX.Example = cmdHelp.PrintExamples(cmdApiXLSX, "queryDeviceList", "WebAppService.showPSView")
2022-12-08 20:43:13 +11:00
// ******************************************************************************** //
var cmdApiMarkDown = &cobra.Command{
Use: output.StringTypeMarkDown + " <[area.]endpoint> [endpoint args ...]",
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
Short: fmt.Sprintf("Get data from the Sungrow api (MarkDown)"),
Long: fmt.Sprintf("Get data from the Sungrow api (MarkDown)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: cmds.SunGrowArgs,
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
}
c.SelfCmd.AddCommand(cmdApiMarkDown)
cmdApiMarkDown.Example = cmdHelp.PrintExamples(cmdApiMarkDown, "queryDeviceList", "WebAppService.showPSView")
2022-11-28 22:27:18 +11:00
// ******************************************************************************** //
var cmdApiStruct = &cobra.Command{
Use: output.StringTypeStruct + " <[area.]endpoint> [endpoint args ...]",
Aliases: []string{},
Annotations: map[string]string{"group": "Data"},
Short: fmt.Sprintf("Show response as Go structure (debug)"),
Long: fmt.Sprintf("Show response as Go structure (debug)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
2022-12-05 21:33:52 +11:00
PreRunE: cmds.SunGrowArgs,
2022-11-28 22:27:18 +11:00
RunE: c.GetEndpoints,
Args: cobra.MinimumNArgs(0),
}
c.SelfCmd.AddCommand(cmdApiStruct)
cmdApiStruct.Example = cmdHelp.PrintExamples(cmdApiStruct, "queryDeviceList", "WebAppService.showPSView")
2022-10-07 23:12:47 +11:00
}
return c.SelfCmd
}
2022-10-13 16:51:32 +11:00
func (c *CmdData) GetEndpoints(cmd *cobra.Command, args []string) error {
// endpoints string, psIds string, date string
for range Only.Once {
2022-10-28 20:52:19 +11:00
cmds.Api.SunGrow.SetOutputType(cmd.Name())
if cmd.Name() == output.StringTypeXLSX {
cmds.Api.SaveFile = true
}
2022-12-08 20:43:13 +11:00
if cmd.Name() == output.StringTypeGraph {
cmds.Api.SaveFile = true
}
2022-12-08 14:02:58 +11:00
args = MinimumArraySize(2, args)
2022-11-04 17:34:30 +11:00
eps := iSolarCloud.SplitArg(args[0])
data := cmds.Api.SunGrow.NewSunGrowData()
data.SetOutput(cmd.Name())
data.SetSaveAsFile(cmds.Api.SaveFile)
data.SetEndpoints(eps...)
2022-12-05 21:33:52 +11:00
data.SetArgs(args[1:]...)
2022-11-04 17:34:30 +11:00
2022-12-05 21:33:52 +11:00
c.Error = data.GetData()
2022-11-04 17:34:30 +11:00
if c.Error != nil {
break
}
2022-12-05 21:33:52 +11:00
c.Error = data.Output()
2022-11-04 17:34:30 +11:00
if c.Error != nil {
break
}
2022-10-13 12:01:27 +11:00
}
2022-10-13 16:51:32 +11:00
return c.Error
2022-10-13 12:01:27 +11:00
}