| 97 | } |
| 98 | |
| 99 | func (self *HTMLRespond) WriteRespond(ses *httpSession) error { |
| 100 | |
| 101 | peerInfo := ses.Peer().(cellnet.PeerProperty) |
| 102 | |
| 103 | log.Debugf("#http.send(%s) '%s' %s | [%d] HTML %s", |
| 104 | peerInfo.Name(), |
| 105 | ses.req.Method, |
| 106 | ses.req.URL.Path, |
| 107 | self.StatusCode, |
| 108 | self.PageTemplate) |
| 109 | |
| 110 | buf := make([]byte, 64) |
| 111 | |
| 112 | bb := bytes.NewBuffer(buf) |
| 113 | bb.Reset() |
| 114 | |
| 115 | err := ses.t.ExecuteTemplate(bb, self.PageTemplate, self.TemplateModel) |
| 116 | |
| 117 | if err != nil { |
| 118 | return err |
| 119 | } |
| 120 | |
| 121 | // template rendered fine, write out the result |
| 122 | ses.resp.Header().Set("Content-Type", "text/html") |
| 123 | ses.resp.WriteHeader(self.StatusCode) |
| 124 | io.Copy(ses.resp, bb) |
| 125 | |
| 126 | return nil |
| 127 | } |
| 128 | |
| 129 | type TextRespond struct { |
| 130 | StatusCode int |