diff options
| author | jet2tlf <jet2tlf@gmail.com> | 2024-06-03 16:48:36 +0000 |
|---|---|---|
| committer | jet2tlf <jet2tlf@gmail.com> | 2024-06-03 16:48:36 +0000 |
| commit | b3dd001bc8cc282c75105ba229e0c55e5a4b3252 (patch) | |
| tree | 1351303952ba7ee16a494db4c069d38747bf3528 /app/handler.go | |
| parent | 8a94110728cca144388958d4bd322045f8bfb9e4 (diff) | |
| download | http-server-go-b3dd001bc8cc282c75105ba229e0c55e5a4b3252.tar.gz http-server-go-b3dd001bc8cc282c75105ba229e0c55e5a4b3252.zip | |
codecrafters submit [skip ci]
Diffstat (limited to 'app/handler.go')
| -rw-r--r-- | app/handler.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/app/handler.go b/app/handler.go new file mode 100644 index 0000000..634e4a9 --- /dev/null +++ b/app/handler.go @@ -0,0 +1,33 @@ +package main + +import ( + "regexp" + "strconv" + "strings" +) + +func basePathHandler(request *Request) *Response { + return NewResponse(Ok, nil, nil) +} + +func echoHandler(request *Request) *Response { + message := strings.Split(request.Target(), "/")[2] + return NewResponse(Ok, map[string]string{ + "Content-Type": "text/plain", + "Content-Length": strconv.Itoa(len(message)), + }, []byte(message)) +} + +func userAgentHandler(request *Request) *Response { + header := request.Header("User-Agent") + return NewResponse(Ok, map[string]string{ + "Content-Type": "text/plain", + "Content-Length": strconv.Itoa(len(header)), + }, []byte(header)) +} + +func Register(builder *RouterBuilder) { + builder.Add("GET", regexp.MustCompile("^/$"), basePathHandler) + builder.Add("GET", regexp.MustCompile("^/echo/[a-zA-Z]+$"), echoHandler) + builder.Add("GET", regexp.MustCompile("^/user-agent$"), userAgentHandler) +} |