diff --git a/helper.go b/helper.go new file mode 100644 index 0000000..edaa379 --- /dev/null +++ b/helper.go @@ -0,0 +1,14 @@ +package main + +import ( + "encoding/json" + "fmt" +) + +func dumpResponse(v interface{}) (err error) { + b, err := json.MarshalIndent(v, "", " ") + if err == nil { + fmt.Println(string(b)) + } + return +} diff --git a/internal/piwigo/config.go b/internal/piwigo/config.go index 73f60be..bea08bc 100644 --- a/internal/piwigo/config.go +++ b/internal/piwigo/config.go @@ -2,14 +2,15 @@ package piwigo import ( "encoding/json" - "fmt" + "errors" "os" + "strings" ) func (p *Piwigo) ConfigPath() (configPath string, err error) { configDir, err := os.UserConfigDir() if err == nil { - configPath = fmt.Sprintf("%s/piwigo-cli", configDir) + configPath = strings.Join([]string{configDir, "piwigo-cli"}, "/") } return } @@ -30,7 +31,7 @@ func (p *Piwigo) SaveConfig() (err error) { return } - configFile := fmt.Sprintf("%s/config.json", configPath) + configFile := strings.Join([]string{configPath, "config.json"}, "/") b, err := json.MarshalIndent(p, "", " ") if err != nil { @@ -47,14 +48,19 @@ func (p *Piwigo) LoadConfig() (err error) { return } - configFile := fmt.Sprintf("%s/config.json", configPath) + configFile := strings.Join([]string{configPath, "config.json"}, "/") b, err := os.ReadFile(configFile) - if os.IsNotExist(err) { - err = nil + if err != nil { + if os.IsNotExist(err) { + err = errors.New("missing configuration file") + } return } - if err != nil { - err = json.Unmarshal(b, p) + + err = json.Unmarshal(b, &p) + if p.Url == "" || p.Token == "" { + err = errors.New("missing configuration url or token") } + return } diff --git a/session.go b/session.go index bb3da90..b5c8fb6 100644 --- a/session.go +++ b/session.go @@ -50,6 +50,21 @@ func (c *LoginCommand) Execute(args []string) error { return nil } +func (c *StatusCommand) Execute(args []string) error { + fmt.Println("Status:") + + Piwigo := piwigo.Piwigo{} + if err := Piwigo.LoadConfig(); err != nil { + return err + } + + var resp map[string]interface{} + Piwigo.Post("pwg.session.getStatus", &url.Values{}, &resp) + dumpResponse(resp) + + return nil +} + func init() { parser.AddCommand("session", "Session management", "", &sessionGroup) }