feat: client receive request as stdin input

This commit is contained in:
Kyren223
2024-10-05 20:24:05 +03:00
parent a835059ab2
commit af0da8dce8
2 changed files with 41 additions and 9 deletions

View File

@@ -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
}

View File

@@ -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
}