ServeTemplate renders and serves a template to an http.ResponseWriter
(statuscode int, w http.ResponseWriter, t *template.Template, data interface{})
| 114 | |
| 115 | // ServeTemplate renders and serves a template to an http.ResponseWriter |
| 116 | func (ci *CopyInject) ServeTemplate(statuscode int, w http.ResponseWriter, t *template.Template, data interface{}) error { |
| 117 | buff := bytes.NewBuffer(make([]byte, 0, 0)) |
| 118 | err := t.Execute(buff, data) |
| 119 | if err != nil { |
| 120 | return err |
| 121 | } |
| 122 | |
| 123 | length := buff.Len() |
| 124 | inj, err := ci.Sniff(buff, "text/html") |
| 125 | if err != nil { |
| 126 | return err |
| 127 | } |
| 128 | w.Header().Set( |
| 129 | "Content-Length", fmt.Sprintf("%d", length+inj.Extra()), |
| 130 | ) |
| 131 | w.WriteHeader(statuscode) |
| 132 | _, err = inj.Copy(w) |
| 133 | if err != nil { |
| 134 | return err |
| 135 | } |
| 136 | return nil |
| 137 | } |
| 138 | |
| 139 | // Copy copies the data from src to dst, injecting the Payload if Sniff found |
| 140 | // the marker. |