12345678910111213141516171819202122232425262728293031323334353637 |
- package render
-
- import (
- "io"
- "net/http"
- "strconv"
- )
-
- type Reader struct {
- ContentType string
- ContentLength int64
- Reader io.Reader
- Headers map[string]string
- }
-
- // Render (Reader) writes data with custom ContentType and headers.
- func (r Reader) Render(w http.ResponseWriter) (err error) {
- r.WriteContentType(w)
- r.Headers["Content-Length"] = strconv.FormatInt(r.ContentLength, 10)
- r.writeHeaders(w, r.Headers)
- _, err = io.Copy(w, r.Reader)
- return
- }
-
- func (r Reader) WriteContentType(w http.ResponseWriter) {
- writeContentType(w, []string{r.ContentType})
- }
-
- func (r Reader) writeHeaders(w http.ResponseWriter, headers map[string]string) {
- header := w.Header()
- for k, v := range headers {
- if val := header[k]; len(val) == 0 {
- header[k] = []string{v}
- }
- }
- }
|