diff options
| author | jet2tlf <jet2tlf@gmail.com> | 2024-06-03 16:14:09 +0000 |
|---|---|---|
| committer | jet2tlf <jet2tlf@gmail.com> | 2024-06-03 16:14:09 +0000 |
| commit | 7225eed4e2609ec4ac02a377bd6505370d4442d4 (patch) | |
| tree | 7cdf19dc53cba6e7a155b3177efa4a7526698800 /app/server.go | |
| parent | 8630cc7003942c3692184f3d1a3ec36a0b7e3df7 (diff) | |
| download | http-server-go-7225eed4e2609ec4ac02a377bd6505370d4442d4.tar.gz http-server-go-7225eed4e2609ec4ac02a377bd6505370d4442d4.zip | |
codecrafters submit [skip ci]
Diffstat (limited to 'app/server.go')
| -rw-r--r-- | app/server.go | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/app/server.go b/app/server.go index 59e20bf..93a45d0 100644 --- a/app/server.go +++ b/app/server.go @@ -2,26 +2,40 @@ package main import ( "fmt" - // Uncomment this block to pass the first stage - // "net" - // "os" + "net" + "os" ) func main() { - // You can use print statements as follows for debugging, they'll be visible when running tests. - fmt.Println("Logs from your program will appear here!") + l, err := net.Listen("tcp", "0.0.0.0:4221") + if err != nil { + fmt.Println("Failed to bind to port 4221") + os.Exit(1) + } - // Uncomment this block to pass the first stage - // - // l, err := net.Listen("tcp", "0.0.0.0:4221") - // if err != nil { - // fmt.Println("Failed to bind to port 4221") - // os.Exit(1) - // } - // - // _, err = l.Accept() - // if err != nil { - // fmt.Println("Error accepting connection: ", err.Error()) - // os.Exit(1) - // } + conn, err := l.Accept() + if err != nil { + fmt.Println("Error accepting connection: ", err.Error()) + os.Exit(1) + } + + reader := NewRequestReader(conn) + + target, err := reader.Target() + if err != nil { + fmt.Println("Error getting target: ", err.Error()) + os.Exit(1) + } + + if target == "/" { + _, err = conn.Write([]byte("HTTP/1.1 200 OK\r\n\r\n")) + if err != nil { + fmt.Println("Error connection write: ", err.Error()) + } + } else { + _, err = conn.Write([]byte("HTTP/1.1 404 Not Found\r\n\r\n")) + if err != nil { + fmt.Println("Error connection write: ", err.Error()) + } + } } |