From b3dd001bc8cc282c75105ba229e0c55e5a4b3252 Mon Sep 17 00:00:00 2001 From: jet2tlf Date: Mon, 3 Jun 2024 13:48:36 -0300 Subject: codecrafters submit [skip ci] --- app/handler.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 app/handler.go (limited to 'app/handler.go') 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) +} -- cgit v1.2.3