OSDN Git Service

feat(warder): add warder backbone (#181)
[bytom/vapor.git] / vendor / github.com / gin-gonic / gin / render / reader.go
1 package render
2
3 import (
4         "io"
5         "net/http"
6         "strconv"
7 )
8
9 type Reader struct {
10         ContentType   string
11         ContentLength int64
12         Reader        io.Reader
13         Headers       map[string]string
14 }
15
16 // Render (Reader) writes data with custom ContentType and headers.
17 func (r Reader) Render(w http.ResponseWriter) (err error) {
18         r.WriteContentType(w)
19         r.Headers["Content-Length"] = strconv.FormatInt(r.ContentLength, 10)
20         r.writeHeaders(w, r.Headers)
21         _, err = io.Copy(w, r.Reader)
22         return
23 }
24
25 func (r Reader) WriteContentType(w http.ResponseWriter) {
26         writeContentType(w, []string{r.ContentType})
27 }
28
29 func (r Reader) writeHeaders(w http.ResponseWriter, headers map[string]string) {
30         header := w.Header()
31         for k, v := range headers {
32                 if val := header[k]; len(val) == 0 {
33                         header[k] = []string{v}
34                 }
35         }
36 }