Files
http-server/main.go
2026-02-15 16:31:49 +01:00

51 lines
1019 B
Go

package main
import (
"bufio"
"log/slog"
"net"
"time"
"tilok.dev/go-http-server/config"
rh "tilok.dev/go-http-server/response_helper"
)
func main() {
conf := config.GetConfig()
listener, err := net.Listen("tcp", conf.NetInterface)
if err != nil {
slog.Error("Could not create listener", "err", err.Error())
}
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
slog.Error("Could not accept connection", "err", err.Error())
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
startTime := time.Now()
defer func() {
slog.Info("Request handled", "duration", time.Since(startTime).String())
}()
defer conn.Close()
reader := bufio.NewReader(conn)
headers := readHeaders(reader)
if headers == nil {
rh.RespondWithStatusCode(400, conn)
return
}
slog.Info("Received request", "method", headers.Method, "uri", headers.Uri, "proto", headers.Proto, "client", conn.RemoteAddr().String())
HandleHTTPRequest(*headers, conn)
}