diff --git a/internal/client/client.go b/internal/client/client.go index b3626e2..b60b320 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -1,33 +1,54 @@ package client import ( + "bufio" + "fmt" "net" + "os" + "strings" + "time" "github.com/kyren223/eko/internal/utils/log" ) func Run() { + log.SetLevel(log.LevelDebug) + log.Info("Client started, waiting for user input...") + for { + fmt.Print("> ") + input, _ := bufio.NewReader(os.Stdin).ReadString('\n') + input = strings.TrimSpace(input) + if input == ":q" || input == "exit" || input == "quit" { + break + } + log.Debug("Input: %v", input) + err := processRequest(input) + if err != nil { + log.Error("%v", err) + } + } +} + +func processRequest(request string) error { conn, err := net.Dial("tcp", ":7223") if err != nil { - log.Error("Unable to establish connection with server: %v", err) - return + return fmt.Errorf("Unable to establish connection with server: %v", err) } defer conn.Close() + conn.SetDeadline(time.Now().Add(time.Second)) log.Info("Established connection to server: %v", conn.RemoteAddr().String()) - message := "Hello, server!" - _, err = conn.Write([]byte(message)) + _, err = conn.Write([]byte(request)) if err != nil { - log.Error("Unable to send message: %v", err) - return + return fmt.Errorf("Unable to send request: %v", err) } buffer := make([]byte, 1024) n, err := conn.Read(buffer) if err != nil { - log.Error("Unable to read response: %v", err) - return + return fmt.Errorf("Unable to receive response: %v", err) } - log.Info("Received from server: %v", string(buffer[:n])) + log.Info("Response from server: %v", string(buffer[:n])) + return nil } diff --git a/internal/utils/log/log.go b/internal/utils/log/log.go index 0fff950..6cd16d5 100644 --- a/internal/utils/log/log.go +++ b/internal/utils/log/log.go @@ -21,3 +21,14 @@ func Warn(message string, a ...any) { func Error(message string, a ...any) { _ = logger.Error(message, a...) } + +func SetLevel(level Level) (oldLevel Level) { + oldLevel = logger.Level + logger.Level = level + return +} + +func GetLevel() Level { + return logger.Level +} +