piwigo-cli/session.go
2021-12-14 13:46:45 +01:00

71 lines
1.4 KiB
Go

package main
import (
"fmt"
"net/url"
"github.com/celogeek/piwigo-cli/internal/piwigo"
)
type LoginCommand struct {
Url string `short:"u" long:"url" description:"Url of the instance"`
Login string `short:"l" long:"login" description:"Login"`
Password string `short:"p" long:"password" description:"Password"`
}
type StatusCommand struct {
}
type SessionGroup struct {
Login LoginCommand `command:"login" description:"Initialize a connection to a piwigo instance"`
Status StatusCommand `command:"status" description:"Get the status of your session"`
}
var sessionGroup SessionGroup
func (c *LoginCommand) Execute(args []string) error {
fmt.Printf("Login on %s...\n", c.Url)
Piwigo := piwigo.Piwigo{
Url: c.Url,
}
result := false
err := Piwigo.Post("pwg.session.login", &url.Values{
"username": []string{c.Login},
"password": []string{c.Password},
}, &result)
if err != nil {
return err
}
err = Piwigo.SaveConfig()
if err != nil {
return err
}
fmt.Println("Login succeed!")
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)
piwigo.DumpResponse(resp)
return nil
}
func init() {
parser.AddCommand("session", "Session management", "", &sessionGroup)
}