| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package gin
- import (
- "log"
- "net/http"
- )
- type (
- ResponseWriter interface {
- http.ResponseWriter
- Status() int
- Written() bool
- WriteHeaderNow()
- }
- responseWriter struct {
- http.ResponseWriter
- status int
- written bool
- }
- )
- func (w *responseWriter) reset(writer http.ResponseWriter) {
- w.ResponseWriter = writer
- w.status = 0
- w.written = false
- }
- func (w *responseWriter) WriteHeader(code int) {
- if code != 0 {
- w.status = code
- if w.written {
- log.Println("[GIN] WARNING. Headers were already written!")
- }
- }
- }
- func (w *responseWriter) WriteHeaderNow() {
- if !w.written {
- w.written = true
- w.ResponseWriter.WriteHeader(w.status)
- }
- }
- func (w *responseWriter) Write(data []byte) (n int, err error) {
- if !w.written {
- if w.status != 0 {
- w.ResponseWriter.WriteHeader(w.status)
- }
- w.written = true
- }
- return w.ResponseWriter.Write(data)
- }
- func (w *responseWriter) Status() int {
- return w.status
- }
- func (w *responseWriter) Written() bool {
- return w.written
- }
|