initial commit
This commit is contained in:
41
magic/response.go
Normal file
41
magic/response.go
Normal file
@ -0,0 +1,41 @@
|
||||
package magic
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
type RespondWriter interface {
|
||||
WriteResponse(http.ResponseWriter)
|
||||
}
|
||||
|
||||
type RespondWriterFunc func(http.ResponseWriter)
|
||||
|
||||
func (fn RespondWriterFunc) WriteResponse(w http.ResponseWriter) {
|
||||
fn(w)
|
||||
}
|
||||
|
||||
type ErrorResponse interface {
|
||||
error
|
||||
WriteResponse(http.ResponseWriter)
|
||||
}
|
||||
|
||||
func init() {
|
||||
RegisterExtractorThatTakesResponseWriterGeneric[http.ResponseWriter](func(w http.ResponseWriter, r *http.Request) (any, error) {
|
||||
return w, nil
|
||||
})
|
||||
|
||||
upgrader := &websocket.Upgrader{
|
||||
Error: func(w http.ResponseWriter, r *http.Request, status int, reason error) {
|
||||
w.WriteHeader(status)
|
||||
json.NewEncoder(w).Encode(Map{
|
||||
"error": reason.Error(),
|
||||
})
|
||||
},
|
||||
}
|
||||
RegisterExtractorThatTakesResponseWriterGeneric[*websocket.Conn](func(w http.ResponseWriter, r *http.Request) (any, error) {
|
||||
return upgrader.Upgrade(w, r, nil)
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user