[feat] RawResponse 支持
This commit is contained in:
parent
19c6d7d183
commit
2e6c86ddaa
@ -12,6 +12,9 @@ import (
|
|||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type RawResponse struct {
|
||||||
|
raw []byte
|
||||||
|
}
|
||||||
type JsonResponse struct {
|
type JsonResponse struct {
|
||||||
raw []byte
|
raw []byte
|
||||||
}
|
}
|
||||||
@ -37,6 +40,20 @@ var wsUpgrader = websocket.Upgrader{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this RawResponse) Get(path ...string) contracts.GlobalParams {
|
||||||
|
return lo.Ternary(len(path) == 0, NewGlobalParam(string(this.raw), nil), NewGlobalParam(string(this.raw), nil).Get(strings.Join(path, ".")))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this RawResponse) Send(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Header.Get("Upgrade") != "" && strings.ToLower(r.Header.Get("Upgrade")) == "websocket" {
|
||||||
|
c, _ := wsUpgrader.Upgrade(w, r, nil)
|
||||||
|
c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, string(this.raw)))
|
||||||
|
c.Close()
|
||||||
|
} else {
|
||||||
|
w.Write(this.raw)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (this JsonResponse) Get(path ...string) contracts.GlobalParams {
|
func (this JsonResponse) Get(path ...string) contracts.GlobalParams {
|
||||||
return lo.Ternary(len(path) == 0, NewGlobalParam(string(this.raw), nil), NewGlobalParam(string(this.raw), nil).Get(strings.Join(path, ".")))
|
return lo.Ternary(len(path) == 0, NewGlobalParam(string(this.raw), nil), NewGlobalParam(string(this.raw), nil).Get(strings.Join(path, ".")))
|
||||||
}
|
}
|
||||||
@ -113,6 +130,10 @@ func (this FileResponse) Send(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewRawResponse(b []byte) contracts.HttpResponse {
|
||||||
|
return &RawResponse{raw: b}
|
||||||
|
}
|
||||||
|
|
||||||
func NewJsonResponse(b []byte) contracts.HttpResponse {
|
func NewJsonResponse(b []byte) contracts.HttpResponse {
|
||||||
return &JsonResponse{raw: b}
|
return &JsonResponse{raw: b}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user