mirror of
https://github.com/zhengkai/orca.git
synced 2026-02-08 20:52:26 +08:00
41 lines
620 B
Go
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))
|
|
}
|