arns-lt-tree-push-service/server.go

82 lines
1.4 KiB
Go
Raw Normal View History

2022-08-02 05:16:11 +00:00
package main
import (
"bufio"
"encoding/json"
"fmt"
"net"
"os"
"strings"
zord_tree "g.arns.lt/zordsdavini/zord-tree"
)
type Request struct {
Id string
Path []string
Filter []Filter
}
type Filter struct {
Key string
Value string
}
func Run() {
if _, err := os.Stat(dest); os.IsNotExist(err) {
panic("Destination directory does not exist.")
}
tree, err := zord_tree.BuildTree(dest, meta)
if err != nil {
panic(err)
}
ln, err := net.Listen("tcp", ":8001")
if err != nil {
fmt.Println("Error starting server: " + err.Error())
}
for {
conn, err := ln.Accept()
if err != nil {
fmt.Println("Error listening to client: " + err.Error())
continue
}
message, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
conn.Close()
} else {
go sendData(conn, message, tree)
}
}
}
func sendData(conn net.Conn, message string, tree zord_tree.Tree) {
message = strings.ReplaceAll(message, "\n", "")
if message == "" {
response, err := json.Marshal(FormatTreeSummery(tree))
writtenBytes, err := fmt.Fprintf(conn, string(response)+"\n")
if err != nil {
return
}
fmt.Printf("sent %d bytes\n", writtenBytes)
return
}
var request Request
err := json.Unmarshal([]byte(message), &request)
if err != nil {
return
}
if request.Id != "" {
fmt.Println("servynam faila")
return
}
// einam i tree path
fmt.Fprintf(conn, "qq\n")
return
}