| 123456789101112131415161718192021222324252627282930313233343536 |
- 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}
- }
- }
- }
|