diff options
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) +} |