mirror of
https://github.com/foomo/gotsrpc.git
synced 2025-10-16 12:35:35 +00:00
feat: don't send reponse on http error
This commit is contained in:
parent
430911ed9d
commit
add9ac903a
@ -332,11 +332,14 @@ func (p *BarGoTSRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
executionStart := time.Now()
|
executionStart := time.Now()
|
||||||
helloRet := p.service.Hello(w, r, arg_number)
|
rw := gotsrpc.ResponseWriter{ResponseWriter: w}
|
||||||
|
helloRet := p.service.Hello(&rw, r, arg_number)
|
||||||
if callStats != nil {
|
if callStats != nil {
|
||||||
callStats.Execution = time.Now().Sub(executionStart)
|
callStats.Execution = time.Now().Sub(executionStart)
|
||||||
}
|
}
|
||||||
|
if rw.Status() == http.StatusOK {
|
||||||
gotsrpc.Reply([]interface{}{helloRet}, callStats, r, w)
|
gotsrpc.Reply([]interface{}{helloRet}, callStats, r, w)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
case "Inheritance":
|
case "Inheritance":
|
||||||
var (
|
var (
|
||||||
|
|||||||
13
go.go
13
go.go
@ -311,19 +311,26 @@ func renderTSRPCServiceProxies(services ServiceList, fullPackageName string, pac
|
|||||||
returnValueNames = append(returnValueNames, lcfirst(method.Name)+ucfirst(retArgName))
|
returnValueNames = append(returnValueNames, lcfirst(method.Name)+ucfirst(retArgName))
|
||||||
}
|
}
|
||||||
g.l("executionStart := time.Now()")
|
g.l("executionStart := time.Now()")
|
||||||
|
if isSessionRequest {
|
||||||
|
g.l("rw := gotsrpc.ResponseWriter{ResponseWriter: w}")
|
||||||
|
callArgs = append([]string{"&rw", "r"}, callArgs...)
|
||||||
|
}
|
||||||
if len(returnValueNames) > 0 {
|
if len(returnValueNames) > 0 {
|
||||||
g.app(strings.Join(returnValueNames, ", ") + " := ")
|
g.app(strings.Join(returnValueNames, ", ") + " := ")
|
||||||
}
|
}
|
||||||
if isSessionRequest {
|
|
||||||
callArgs = append([]string{"w", "r"}, callArgs...)
|
|
||||||
}
|
|
||||||
g.app("p.service." + method.Name + "(" + strings.Join(callArgs, ", ") + ")")
|
g.app("p.service." + method.Name + "(" + strings.Join(callArgs, ", ") + ")")
|
||||||
g.nl()
|
g.nl()
|
||||||
|
|
||||||
g.l("if callStats != nil {")
|
g.l("if callStats != nil {")
|
||||||
g.ind(1).l("callStats.Execution = time.Now().Sub(executionStart)").ind(-1)
|
g.ind(1).l("callStats.Execution = time.Now().Sub(executionStart)").ind(-1)
|
||||||
g.l("}")
|
g.l("}")
|
||||||
|
if isSessionRequest {
|
||||||
|
g.l("if rw.Status() == http.StatusOK {").ind(1)
|
||||||
|
}
|
||||||
g.l("gotsrpc.Reply([]interface{}{" + strings.Join(returnValueNames, ", ") + "}, callStats, r, w)")
|
g.l("gotsrpc.Reply([]interface{}{" + strings.Join(returnValueNames, ", ") + "}, callStats, r, w)")
|
||||||
|
if isSessionRequest {
|
||||||
|
g.ind(-1).l("}")
|
||||||
|
}
|
||||||
g.l("return")
|
g.l("return")
|
||||||
g.ind(-1)
|
g.ind(-1)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,18 +28,15 @@ func GetCalledFunc(r *http.Request, endPoint string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ErrorFuncNotFound(w http.ResponseWriter) {
|
func ErrorFuncNotFound(w http.ResponseWriter) {
|
||||||
w.WriteHeader(http.StatusNotFound)
|
http.Error(w, "method not found", http.StatusNotFound)
|
||||||
w.Write([]byte("method not found"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ErrorCouldNotLoadArgs(w http.ResponseWriter) {
|
func ErrorCouldNotLoadArgs(w http.ResponseWriter) {
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
http.Error(w, "could not load args", http.StatusBadRequest)
|
||||||
w.Write([]byte("could not load args"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ErrorMethodNotAllowed(w http.ResponseWriter) {
|
func ErrorMethodNotAllowed(w http.ResponseWriter) {
|
||||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
http.Error(w, "you gotta POST", http.StatusMethodNotAllowed)
|
||||||
w.Write([]byte("you gotta POST"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadArgs(args interface{}, callStats *CallStats, r *http.Request) error {
|
func LoadArgs(args interface{}, callStats *CallStats, r *http.Request) error {
|
||||||
|
|||||||
24
responsewriter.go
Normal file
24
responsewriter.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package gotsrpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ResponseWriter struct {
|
||||||
|
http.ResponseWriter
|
||||||
|
wroteHeader bool
|
||||||
|
status int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ResponseWriter) WriteHeader(status int) {
|
||||||
|
r.status = status
|
||||||
|
r.wroteHeader = true
|
||||||
|
r.ResponseWriter.WriteHeader(status)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ResponseWriter) Status() int {
|
||||||
|
if !r.wroteHeader {
|
||||||
|
return http.StatusOK
|
||||||
|
}
|
||||||
|
return r.status
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user