diff options
Diffstat (limited to 'app/server.go')
| -rw-r--r-- | app/server.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/app/server.go b/app/server.go index 93a45d0..b4dd7ee 100644 --- a/app/server.go +++ b/app/server.go @@ -4,6 +4,7 @@ import ( "fmt" "net" "os" + "strings" ) func main() { @@ -19,19 +20,44 @@ func main() { os.Exit(1) } - reader := NewRequestReader(conn) - - target, err := reader.Target() + request, err := NewRequest(conn) if err != nil { fmt.Println("Error getting target: ", err.Error()) os.Exit(1) } - if target == "/" { + if request.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 if strings.HasPrefix(request.Target, "/echo/") { + message := strings.SplitN(request.Target, "/", 3)[2] + + _, err = conn.Write([]byte("HTTP/1.1 200 OK\r\n")) + if err != nil { + fmt.Println("Error connection write: ", err.Error()) + } + + _, err = conn.Write([]byte("Content-Type: text/plain\r\n")) + if err != nil { + fmt.Println("Error connection write: ", err.Error()) + } + + _, err = conn.Write([]byte(fmt.Sprintf("Content-Length: %d\r\n", len(message)))) + if err != nil { + fmt.Println("Error connection write: ", err.Error()) + } + + _, err = conn.Write([]byte("\r\n")) + if err != nil { + fmt.Println("Error connection write: ", err.Error()) + } + + _, err = conn.Write([]byte(message)) + 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 { |