You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
54 lines
1.4 KiB
package http |
|
|
|
import ( |
|
"bytes" |
|
"encoding/json" |
|
"net/http" |
|
"time" |
|
|
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/net/metadata" |
|
"go-common/library/stat/prom" |
|
) |
|
|
|
func dynamicNew(c *bm.Context) { |
|
params := c.Request.Form |
|
data, err := externalSvc.DynamicNew(c, params.Encode()) |
|
dynamicResult(c, data, err) |
|
} |
|
|
|
func dynamicCount(c *bm.Context) { |
|
params := c.Request.Form |
|
data, err := externalSvc.DynamicCount(c, params.Encode()) |
|
dynamicResult(c, data, err) |
|
} |
|
|
|
func dynamicHistory(c *bm.Context) { |
|
params := c.Request.Form |
|
data, err := externalSvc.DynamicHistory(c, params.Encode()) |
|
dynamicResult(c, data, err) |
|
} |
|
|
|
func dynamicResult(c *bm.Context, data json.RawMessage, err error) { |
|
params := c.Request.Form |
|
path := c.Request.URL.Path |
|
code := ecode.OK |
|
if err != nil { |
|
code = ecode.Int(-22) |
|
c.JSON(nil, code) |
|
} else { |
|
if !bytes.Contains(data, []byte(`"code":0`)) { |
|
var res struct { |
|
Code int `json:"code"` |
|
} |
|
json.Unmarshal(data, &res) |
|
code = ecode.Int(res.Code) |
|
} |
|
c.Bytes(http.StatusOK, "text/json; charset=utf-8", data) |
|
} |
|
prom.HTTPServer.Incr("no_user", path[1:], code.Error()) |
|
prom.HTTPServer.Timing("no_user", int64(time.Since(time.Now())/time.Millisecond), path[1:]) |
|
log.Info("method:%s,mid:%v,ip:%s,params:%s,ret:%d[%s] stack:%+v", path, params.Get("uid"), metadata.String(c, metadata.RemoteIP), params.Encode(), code.Code(), code.Message(), err) |
|
}
|
|
|