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/response.go | |
| parent | 8a94110728cca144388958d4bd322045f8bfb9e4 (diff) | |
| download | http-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.go | 31 |
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} +} |