aboutsummaryrefslogtreecommitdiff
path: root/app/response.go
diff options
context:
space:
mode:
authorjet2tlf <jet2tlf@gmail.com>2024-06-03 16:48:36 +0000
committerjet2tlf <jet2tlf@gmail.com>2024-06-03 16:48:36 +0000
commitb3dd001bc8cc282c75105ba229e0c55e5a4b3252 (patch)
tree1351303952ba7ee16a494db4c069d38747bf3528 /app/response.go
parent8a94110728cca144388958d4bd322045f8bfb9e4 (diff)
downloadhttp-server-go-b3dd001bc8cc282c75105ba229e0c55e5a4b3252.tar.gz
http-server-go-b3dd001bc8cc282c75105ba229e0c55e5a4b3252.zip
codecrafters submit [skip ci]
Diffstat (limited to 'app/response.go')
-rw-r--r--app/response.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/response.go b/app/response.go
new file mode 100644
index 0000000..abc28d9
--- /dev/null
+++ b/app/response.go
@@ -0,0 +1,31 @@
+package main
+
+import "fmt"
+
+type Response struct {
+ status Status
+ headers map[string]string
+ body []byte
+}
+
+func (r *Response) StatusLine() []byte {
+ return []byte(fmt.Sprintf("HTTP/1.1 %d %s\r\n", r.status.Code(), r.status.Text()))
+}
+
+func (r *Response) Headers() []byte {
+ buf := make([]byte, 0)
+
+ for key, value := range r.headers {
+ buf = append(buf, fmt.Sprintf("%s: %s\r\n", key, value)...)
+ }
+
+ return append(buf, "\r\n"...)
+}
+
+func (r *Response) Body() []byte {
+ return r.body
+}
+
+func NewResponse(code Status, headers map[string]string, body []byte) *Response {
+ return &Response{code, headers, body}
+}