mirror of https://github.com/jetkvm/kvm.git
34 lines
848 B
Go
34 lines
848 B
Go
//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
|
|
}
|
|
}
|
|
}
|