diff --git a/cmd/piwigo-cli/main.go b/cmd/piwigo-cli/main.go new file mode 100644 index 0000000..3c67fbf --- /dev/null +++ b/cmd/piwigo-cli/main.go @@ -0,0 +1,9 @@ +package main + +import ( + "github.com/celogeek/piwigo-cli/internal/piwigocli" +) + +func main() { + piwigocli.Run() +} diff --git a/main.go b/internal/piwigocli/main.go similarity index 91% rename from main.go rename to internal/piwigocli/main.go index 8d83b19..a38b8a8 100644 --- a/main.go +++ b/internal/piwigocli/main.go @@ -1,4 +1,4 @@ -package main +package piwigocli import ( "os" @@ -12,7 +12,7 @@ var options Options var parser = flags.NewParser(&options, flags.Default) -func main() { +func Run() { if _, err := parser.Parse(); err != nil { switch flagsErr := err.(type) { case flags.ErrorType: diff --git a/internal/piwigocli/session.go b/internal/piwigocli/session.go new file mode 100644 index 0000000..d05db3a --- /dev/null +++ b/internal/piwigocli/session.go @@ -0,0 +1,12 @@ +package piwigocli + +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 init() { + parser.AddCommand("session", "Session management", "", &sessionGroup) +} diff --git a/internal/piwigocli/session_login.go b/internal/piwigocli/session_login.go new file mode 100644 index 0000000..9b79dcd --- /dev/null +++ b/internal/piwigocli/session_login.go @@ -0,0 +1,41 @@ +package piwigocli + +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"` +} + +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 +} diff --git a/internal/piwigocli/session_status.go b/internal/piwigocli/session_status.go new file mode 100644 index 0000000..3ad37fe --- /dev/null +++ b/internal/piwigocli/session_status.go @@ -0,0 +1,36 @@ +package piwigocli + +import ( + "fmt" + "net/url" + + "github.com/celogeek/piwigo-cli/internal/piwigo" +) + +type StatusCommand struct { +} + +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 +} diff --git a/session.go b/session.go deleted file mode 100644 index 2efe97b..0000000 --- a/session.go +++ /dev/null @@ -1,80 +0,0 @@ -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) -} diff --git a/tags.go b/tags.go deleted file mode 100644 index 2711af0..0000000 --- a/tags.go +++ /dev/null @@ -1,22 +0,0 @@ -package main - -import "fmt" - -type TagsCommand struct { - All bool `short:"a" long:"all" description:"Get all available tags"` -} - -var tagsCommand TagsCommand - -func (c *TagsCommand) Execute(args []string) error { - fmt.Printf("List tags %v\n", c.All) - - return nil -} - -func init() { - parser.AddCommand("tags", - "List tags", - "List tags", - &tagsCommand) -}