simplify code with http.Flusher type conversion (#325)
* simplify code with http.Flusher type conversion * simplify code with http.Flusher type conversion, better version
This commit is contained in:
@@ -46,18 +46,18 @@ func Authorize(secret string, opts ...AuthorizeOption) func(http.Handler) http.H
|
|||||||
parser := token.NewTokenParser()
|
parser := token.NewTokenParser()
|
||||||
return func(next http.Handler) http.Handler {
|
return func(next http.Handler) http.Handler {
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
token, err := parser.ParseToken(r, secret, authOpts.PrevSecret)
|
tok, err := parser.ParseToken(r, secret, authOpts.PrevSecret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
unauthorized(w, r, err, authOpts.Callback)
|
unauthorized(w, r, err, authOpts.Callback)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !token.Valid {
|
if !tok.Valid {
|
||||||
unauthorized(w, r, errInvalidToken, authOpts.Callback)
|
unauthorized(w, r, errInvalidToken, authOpts.Callback)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
claims, ok := token.Claims.(jwt.MapClaims)
|
claims, ok := tok.Claims.(jwt.MapClaims)
|
||||||
if !ok {
|
if !ok {
|
||||||
unauthorized(w, r, errNoClaims, authOpts.Callback)
|
unauthorized(w, r, errNoClaims, authOpts.Callback)
|
||||||
return
|
return
|
||||||
@@ -122,6 +122,12 @@ func newGuardedResponseWriter(w http.ResponseWriter) *guardedResponseWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (grw *guardedResponseWriter) Flush() {
|
||||||
|
if flusher, ok := grw.writer.(http.Flusher); ok {
|
||||||
|
flusher.Flush()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (grw *guardedResponseWriter) Header() http.Header {
|
func (grw *guardedResponseWriter) Header() http.Header {
|
||||||
return grw.writer.Header()
|
return grw.writer.Header()
|
||||||
}
|
}
|
||||||
@@ -138,9 +144,3 @@ func (grw *guardedResponseWriter) WriteHeader(statusCode int) {
|
|||||||
grw.wroteHeader = true
|
grw.wroteHeader = true
|
||||||
grw.writer.WriteHeader(statusCode)
|
grw.writer.WriteHeader(statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (grw *guardedResponseWriter) Flush() {
|
|
||||||
if flusher, ok := grw.writer.(http.Flusher); ok {
|
|
||||||
flusher.Flush()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ func TestAuthHandler(t *testing.T) {
|
|||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
flusher, ok := w.(http.Flusher)
|
flusher, ok := w.(http.Flusher)
|
||||||
assert.Equal(t, ok, true)
|
assert.True(t, ok)
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,12 @@ func newCryptionResponseWriter(w http.ResponseWriter) *cryptionResponseWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *cryptionResponseWriter) Flush() {
|
||||||
|
if flusher, ok := w.ResponseWriter.(http.Flusher); ok {
|
||||||
|
flusher.Flush()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (w *cryptionResponseWriter) Header() http.Header {
|
func (w *cryptionResponseWriter) Header() http.Header {
|
||||||
return w.ResponseWriter.Header()
|
return w.ResponseWriter.Header()
|
||||||
}
|
}
|
||||||
@@ -95,12 +101,6 @@ func (w *cryptionResponseWriter) WriteHeader(statusCode int) {
|
|||||||
w.ResponseWriter.WriteHeader(statusCode)
|
w.ResponseWriter.WriteHeader(statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *cryptionResponseWriter) Flush() {
|
|
||||||
if flusher, ok := w.ResponseWriter.(http.Flusher); ok {
|
|
||||||
flusher.Flush()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *cryptionResponseWriter) flush(key []byte) {
|
func (w *cryptionResponseWriter) flush(key []byte) {
|
||||||
if w.buf.Len() == 0 {
|
if w.buf.Len() == 0 {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -92,9 +92,8 @@ func TestCryptionHandlerFlush(t *testing.T) {
|
|||||||
req := httptest.NewRequest(http.MethodGet, "/any", nil)
|
req := httptest.NewRequest(http.MethodGet, "/any", nil)
|
||||||
handler := CryptionHandler(aesKey)(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
handler := CryptionHandler(aesKey)(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
w.Write([]byte(respText))
|
w.Write([]byte(respText))
|
||||||
|
|
||||||
flusher, ok := w.(http.Flusher)
|
flusher, ok := w.(http.Flusher)
|
||||||
assert.Equal(t, ok, true)
|
assert.True(t, ok)
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
}))
|
}))
|
||||||
recorder := httptest.NewRecorder()
|
recorder := httptest.NewRecorder()
|
||||||
|
|||||||
@@ -74,6 +74,10 @@ func newDetailLoggedResponseWriter(writer *LoggedResponseWriter, buf *bytes.Buff
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *DetailLoggedResponseWriter) Flush() {
|
||||||
|
w.writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
func (w *DetailLoggedResponseWriter) Header() http.Header {
|
func (w *DetailLoggedResponseWriter) Header() http.Header {
|
||||||
return w.writer.Header()
|
return w.writer.Header()
|
||||||
}
|
}
|
||||||
@@ -87,12 +91,6 @@ func (w *DetailLoggedResponseWriter) WriteHeader(code int) {
|
|||||||
w.writer.WriteHeader(code)
|
w.writer.WriteHeader(code)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *DetailLoggedResponseWriter) Flush() {
|
|
||||||
if flusher, ok := http.ResponseWriter(w.writer).(http.Flusher); ok {
|
|
||||||
flusher.Flush()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func DetailedLogHandler(next http.Handler) http.Handler {
|
func DetailedLogHandler(next http.Handler) http.Handler {
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
timer := utils.NewElapsedTimer()
|
timer := utils.NewElapsedTimer()
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ func TestLogHandler(t *testing.T) {
|
|||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
flusher, ok := w.(http.Flusher)
|
flusher, ok := w.(http.Flusher)
|
||||||
assert.Equal(t, ok, true)
|
assert.True(t, ok)
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,12 @@ type WithCodeResponseWriter struct {
|
|||||||
Code int
|
Code int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *WithCodeResponseWriter) Flush() {
|
||||||
|
if flusher, ok := w.Writer.(http.Flusher); ok {
|
||||||
|
flusher.Flush()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (w *WithCodeResponseWriter) Header() http.Header {
|
func (w *WithCodeResponseWriter) Header() http.Header {
|
||||||
return w.Writer.Header()
|
return w.Writer.Header()
|
||||||
}
|
}
|
||||||
@@ -19,9 +25,3 @@ func (w *WithCodeResponseWriter) WriteHeader(code int) {
|
|||||||
w.Writer.WriteHeader(code)
|
w.Writer.WriteHeader(code)
|
||||||
w.Code = code
|
w.Code = code
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WithCodeResponseWriter) Flush() {
|
|
||||||
if flusher, ok := w.Writer.(http.Flusher); ok {
|
|
||||||
flusher.Flush()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ func TestWithCodeResponseWriter(t *testing.T) {
|
|||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
flusher, ok := http.ResponseWriter(cw).(http.Flusher)
|
flusher, ok := http.ResponseWriter(cw).(http.Flusher)
|
||||||
assert.Equal(t, ok, true)
|
assert.True(t, ok)
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user