package server 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) }