2024-07-22 17:12:48 +08:00

61 lines
1.1 KiB
Go

package middleware
import (
"f5"
"mt"
"net/http"
"q5"
"github.com/gin-gonic/gin"
)
func CaForward(c *gin.Context, sig string, traceid string) {
queryParams := c.Request.URL.Query()
params := map[string]string{}
for k, v := range queryParams {
params[k] = v[0]
}
if sig != "" {
params["sig"] = sig
params["trace_id"] = traceid
}
fullrequrl := mt.Table.Config.GetById(0).GetRedirectUrl() + c.Request.URL.Path
cb := func(rsp f5.HttpCliResponse) {
if rsp.GetErr() != nil {
c.JSON(http.StatusOK, gin.H{
"errcode": 1004,
"errmsg": rsp.GetErr(),
})
return
}
// fmt.Println("saved ori context:", c.ori_req)
c.JSON(http.StatusOK, rsp.GetRawData())
}
switch c.Request.Method {
case "GET":
f5.GetHttpCliMgr().SendGoStyleRequest(
fullrequrl,
params,
cb)
case "POST":
f5.GetHttpCliMgr().SendGoStylePost(
fullrequrl,
params,
c.ContentType(),
q5.GetPostBody(c.Request),
cb)
}
if sig != "" {
account := c.DefaultQuery("account_id", "")
v, exist := redirectRequest.Load(account)
if exist && (*v).trace_id == traceid {
redirectRequest.Delete(account)
}
}
}