Update
This commit is contained in:
1 parent
3530afb854
commit
6903fcff27
2146 files changed
+112256
-190703
No files matched your search
+33
@@ -0,0 +1,33 @@
|
||||
//go:build !js
|
||||
|
||||
package websocket
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type rwUnwrapper interface {
|
||||
Unwrap() http.ResponseWriter
|
||||
}
|
||||
|
||||
// hijacker returns the Hijacker interface of the http.ResponseWriter.
|
||||
// It follows the Unwrap method of the http.ResponseWriter if available,
|
||||
// matching the behavior of http.ResponseController. If the Hijacker
|
||||
// interface is not found, it returns false.
|
||||
//
|
||||
// Since the http.ResponseController is not available in Go 1.19, and
|
||||
// does not support checking the presence of the Hijacker interface,
|
||||
// this function is used to provide a consistent way to check for the
|
||||
// Hijacker interface across Go versions.
|
||||
func hijacker(rw http.ResponseWriter) (http.Hijacker, bool) {
|
||||
for {
|
||||
switch t := rw.(type) {
|
||||
case http.Hijacker:
|
||||
return t, true
|
||||
case rwUnwrapper:
|
||||
rw = t.Unwrap()
|
||||
default:
|
||||
return nil, false
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user