diff --git a/_examples/apidoc/yaag/go.mod b/_examples/apidoc/yaag/go.mod index 84abcc14..8adcfad2 100644 --- a/_examples/apidoc/yaag/go.mod +++ b/_examples/apidoc/yaag/go.mod @@ -3,6 +3,6 @@ module github.com/kataras/iris/_examples/apidoc/yaag go 1.14 require ( - github.com/betacraft/yaag v1.0.1-0.20191027021412-565f65e36090 - github.com/kataras/iris/v12 v12.1.9-0.20200718094131-5228aa163dc9 + github.com/betacraft/yaag v1.0.1-0.20200719063524-47d781406108 + github.com/kataras/iris/v12 v12.1.9-0.20200719040914-c21125c094d6 ) diff --git a/_examples/database/mongodb/go.mod b/_examples/database/mongodb/go.mod index 3170e592..6b64a8ab 100644 --- a/_examples/database/mongodb/go.mod +++ b/_examples/database/mongodb/go.mod @@ -4,6 +4,6 @@ go 1.14 require ( github.com/joho/godotenv v1.3.0 - github.com/kataras/iris/v12 v12.1.9-0.20200718094131-5228aa163dc9 + github.com/kataras/iris/v12 v12.1.9-0.20200719040914-c21125c094d6 go.mongodb.org/mongo-driver v1.3.4 ) diff --git a/_examples/database/mysql/go.mod b/_examples/database/mysql/go.mod index 56e7e1dd..cf895c1d 100644 --- a/_examples/database/mysql/go.mod +++ b/_examples/database/mysql/go.mod @@ -4,6 +4,6 @@ go 1.14 require ( github.com/go-sql-driver/mysql v1.5.0 - github.com/kataras/iris/v12 v12.1.9-0.20200718094131-5228aa163dc9 + github.com/kataras/iris/v12 v12.1.9-0.20200719040914-c21125c094d6 github.com/mailgun/groupcache/v2 v2.1.0 ) diff --git a/_examples/kafka-api/go.mod b/_examples/kafka-api/go.mod index 73f9fdcb..658b6054 100644 --- a/_examples/kafka-api/go.mod +++ b/_examples/kafka-api/go.mod @@ -4,5 +4,5 @@ go 1.14 require ( github.com/Shopify/sarama v1.26.4 - github.com/kataras/iris/v12 v12.1.9-0.20200718094131-5228aa163dc9 + github.com/kataras/iris/v12 v12.1.9-0.20200719040914-c21125c094d6 ) diff --git a/_examples/mvc/overview/go.mod b/_examples/mvc/overview/go.mod index 9878da6b..b663bb5b 100644 --- a/_examples/mvc/overview/go.mod +++ b/_examples/mvc/overview/go.mod @@ -2,4 +2,4 @@ module app go 1.14 -require github.com/kataras/iris/v12 v12.1.9-0.20200718094131-5228aa163dc9 +require github.com/kataras/iris/v12 v12.1.9-0.20200719040914-c21125c094d6 diff --git a/_examples/websocket/socketio/go.mod b/_examples/websocket/socketio/go.mod index 0c18fed9..b74f0323 100644 --- a/_examples/websocket/socketio/go.mod +++ b/_examples/websocket/socketio/go.mod @@ -4,5 +4,5 @@ go 1.14 require ( github.com/googollee/go-socket.io v1.4.3-0.20191109153049-7451e2f8c2e0 - github.com/kataras/iris/v12 v12.1.9-0.20200718094131-5228aa163dc9 + github.com/kataras/iris/v12 v12.1.9-0.20200719040914-c21125c094d6 ) diff --git a/context/context.go b/context/context.go index 516d1a00..a3270476 100644 --- a/context/context.go +++ b/context/context.go @@ -335,7 +335,10 @@ func (ctx *Context) ResponseWriter() ResponseWriter { return ctx.writer } -// ResetResponseWriter should change or upgrade the context's ResponseWriter. +// ResetResponseWriter sets a new ResponseWriter implementation +// to this Context to use as its writer. +// Note, to change the underline http.ResponseWriter use +// ctx.ResponseWriter().SetWriter(http.ResponseWRiter) instead. func (ctx *Context) ResetResponseWriter(newResponseWriter ResponseWriter) { ctx.writer = newResponseWriter } diff --git a/context/response_writer.go b/context/response_writer.go index 0816ce2c..05a20474 100644 --- a/context/response_writer.go +++ b/context/response_writer.go @@ -24,11 +24,12 @@ type ResponseWriter interface { // Naive returns the simple, underline and original http.ResponseWriter // that backends this response writer. Naive() http.ResponseWriter - + // SetWriter sets the underline http.ResponseWriter + // that this responseWriter should write on. + SetWriter(underline http.ResponseWriter) // BeginResponse receives an http.ResponseWriter // and initialize or reset the response writer's field's values. BeginResponse(http.ResponseWriter) - // EndResponse is the last function which is called right before the server sent the final response. // // Here is the place which we can make the last checks or do a cleanup. @@ -168,6 +169,12 @@ func (w *responseWriter) BeginResponse(underline http.ResponseWriter) { w.beforeFlush = nil w.written = NoWritten w.statusCode = defaultStatusCode + w.SetWriter(underline) +} + +// SetWriter sets the underline http.ResponseWriter +// that this responseWriter should write on. +func (w *responseWriter) SetWriter(underline http.ResponseWriter) { w.ResponseWriter = underline pusher, ok := underline.(http.Pusher)