package packets
import (
"fmt"
"net"
"strings"
)
type Command struct {
cmd string
args []string
}
func ParseCommand(b []byte) *Command {
line := string(b)
line = strings.TrimSpace(line)
split := strings.Split(line, " ")
return &Command{strings.ToUpper(split[0]), split[1:]}
}
func NewCommand(cmd string, args ...string) *Command {
return &Command{cmd, args}
}
func (cmd *Command) Cmd() string {
return cmd.cmd
}
func (cmd *Command) Args() []string {
return cmd.args
}
func (cmd *Command) String() string {
if len(cmd.args) > 0 {
return strings.Join(append([]string{cmd.cmd}, cmd.args...), " ")
}
return cmd.cmd
}
func (cmd *Command) SafeString() string {
return cmd.String()
}
func (cmd *Command) Bytes() []byte {
return []byte(cmd.String() + "\r\n")
}
func (cmd *Command) Send(c net.Conn) error {
fmt.Println(cmd.String())
_, err := c.Write(cmd.Bytes())
return err
}