Files
orca/server/src/core/web.go
Zheng Kai 3b6af69d84 up
2023-06-09 18:26:00 +08:00

41 lines
620 B
Go

package core
import (
"errors"
"net/http"
"project/metrics"
"project/zj"
)
var errSkip = errors.New(`skip`)
// WebHandle ...
func (c *Core) ServeHTTP(w http.ResponseWriter, r *http.Request) {
metrics.ReqConcurrentInc()
defer metrics.ReqConcurrentDec()
p, err := req(w, r)
if err != nil {
if err != errSkip {
metrics.ReqFailCount()
}
err500(w)
return
}
metrics.ReqBytes(len(p.Body))
ab, cached, err := c.getAB(p, r)
if err != nil {
err500(w)
return
}
zj.J(`cached`, cached)
w.Header().Add(`Content-Type`, `application/json`)
w.Write(ab)
go doMetrics(ab, cached, r, len(p.Body))
}