mirror of
https://github.com/celogeek/piwigo-cli.git
synced 2025-05-25 10:12:37 +02:00
81 lines
1.7 KiB
Go
81 lines
1.7 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
|
|
}
|
|
|
|
type StatusResponse struct {
|
|
User string `json:"username"`
|
|
Role string `json:"status"`
|
|
Version string `json:"version"`
|
|
}
|
|
|
|
func (c *StatusCommand) Execute(args []string) error {
|
|
fmt.Println("Status:")
|
|
|
|
Piwigo := piwigo.Piwigo{}
|
|
if err := Piwigo.LoadConfig(); err != nil {
|
|
return err
|
|
}
|
|
|
|
resp := &StatusResponse{}
|
|
|
|
if err := Piwigo.Post("pwg.session.getStatus", &url.Values{}, &resp); err != nil {
|
|
return err
|
|
}
|
|
fmt.Printf(" Version: %s\n", resp.Version)
|
|
fmt.Printf(" User : %s\n", resp.User)
|
|
fmt.Printf(" Role : %s\n", resp.Role)
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
parser.AddCommand("session", "Session management", "", &sessionGroup)
|
|
}
|