package main import ( "errors" "fmt" "github.com/go-resty/resty/v2" ) type RegisterCommand struct { Url string `short:"u" long:"url" description:"Url of the instance" required:"true"` Login string `short:"l" long:"login" description:"Login" required:"true"` Password string `short:"p" long:"password" description:"Password" required:"true"` } var register RegisterCommand type RegisterRequest struct { Login string `json:"login"` Password string `json:"password"` } type RegisterResponse struct { Error string Status string } func (c *RegisterCommand) Execute(args []string) error { fmt.Printf("Registering on %s...\n", c.Url) cli := resty.New().SetBaseURL(register.Url) resp, err := cli. R(). SetBody(&RegisterRequest{register.Login, register.Password}). SetResult(&RegisterResponse{}). SetError(&RegisterResponse{}). Post("/account/signup") if err != nil { return err } if err, ok := resp.Error().(*RegisterResponse); ok { fmt.Println("Registering failed!") return errors.New(err.Error) } fmt.Println("Registering succeed!") return nil } func init() { parser.AddCommand("register", "Register", "", ®ister) }