2024-03-22 15:08:24 +01:00

50 lines
1.1 KiB
Go

package web
import (
"io"
"net/http"
)
// Response is the interface for an HTTP response.
type Response interface {
Flush()
Header(key string) string
SetHeader(key string, value string)
Write([]byte) (int, error)
WriteString(string) (int, error)
}
// response represents the HTTP response used in the given context.
type response struct {
http.ResponseWriter
}
// Flush flushes the response buffers to the client.
func (res response) Flush() {
flusher, ok := res.ResponseWriter.(http.Flusher)
if ok {
flusher.Flush()
}
}
// Header returns the header value for the given key.
func (res response) Header(key string) string {
return res.ResponseWriter.Header().Get(key)
}
// SetHeader sets the header value for the given key.
func (res response) SetHeader(key string, value string) {
res.ResponseWriter.Header().Set(key, value)
}
// Write implements the io.Writer interface.
func (res response) Write(body []byte) (int, error) {
return res.ResponseWriter.Write(body)
}
// WriteString implements the io.StringWriter interface.
func (res response) WriteString(body string) (int, error) {
return res.ResponseWriter.(io.StringWriter).WriteString(body)
}