添加国外服务器负责请求中继请求
This commit is contained in:
parent
e3a5d6e49a
commit
2e671421fe
|
|
@ -71,6 +71,8 @@ func SetUpToolGroup(router *gin.Engine) {
|
|||
toolGroup.POST("/spark_create_outline", CreateSparkPPTSOutline)
|
||||
toolGroup.POST("/spark_create_ppt", CreateSparkPPT)
|
||||
toolGroup.POST("/spark_ppt_create_status", GetSparkCreatePPTStatus)
|
||||
//国外服务器处理请求
|
||||
toolGroup.POST("/online_server_request", HandleOnlineServerRequest)
|
||||
}
|
||||
|
||||
func SetDeviceStatusV2(c *gin.Context) {
|
||||
|
|
@ -849,3 +851,23 @@ func handleThirdPartyCallback(c *gin.Context) {
|
|||
resp.Message = "success"
|
||||
c.JSON(http.StatusOK, resp)
|
||||
}
|
||||
|
||||
func HandleOnlineServerRequest(c *gin.Context) {
|
||||
var req proto.OnlineServerReq
|
||||
var resp proto.GenerateResp
|
||||
if err := c.ShouldBind(&req); err == nil {
|
||||
respData, err2 := service.DoRequestToForeignServer(&req)
|
||||
if err2 != nil {
|
||||
resp.Code = proto.OperationFailed
|
||||
resp.Message = err2.Error()
|
||||
} else {
|
||||
resp.Code = proto.SuccessCode
|
||||
resp.Message = "success"
|
||||
resp.Data = respData
|
||||
}
|
||||
} else {
|
||||
resp.Code = proto.ParameterError
|
||||
resp.Message = "参数错误"
|
||||
}
|
||||
c.JSON(http.StatusOK, resp)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -140,3 +140,25 @@ type GitHubUserInfo struct {
|
|||
AvatarUrl string `json:"avatar_url"` //头像
|
||||
Url string `json:"url"` // 用户主页
|
||||
}
|
||||
|
||||
// 国外服务器负责请求的请求
|
||||
type OnlineServerReq struct {
|
||||
Type string `json:"type"` // 请求类型,get,post
|
||||
Url string `json:"url"` // 请求地址
|
||||
Data any `json:"data"` // 请求数据
|
||||
Header []OutlineServerReqData `json:"header"` // 请求头
|
||||
}
|
||||
|
||||
type OutlineServerReqData struct {
|
||||
Key string `json:"key"` // 请求的key
|
||||
Value string `json:"value"` // 请求的值
|
||||
}
|
||||
|
||||
type OnlineServerRespData struct {
|
||||
Response string `json:"response"` // 响应数据
|
||||
}
|
||||
|
||||
type OutlineServerResp struct {
|
||||
Request OnlineServerReq `json:"request"` // 请求
|
||||
Response OnlineServerRespData `json:"response"` // 响应
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"StuAcaWorksAI/proto"
|
||||
"StuAcaWorksAI/worker"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/golang-jwt/jwt"
|
||||
"log"
|
||||
|
|
@ -449,3 +450,43 @@ func DoGoogleCallBack(state *proto.ThirdPartyLoginState, code string) {
|
|||
log.Println("do handle gitee callback success, third party login status:", string(thirdPartyLoginStatusStr))
|
||||
worker.SetRedisWithExpire(state.UUID, string(thirdPartyLoginStatusStr), time.Minute*10)
|
||||
}
|
||||
|
||||
// 国外服务器处理国内服务器要请求外网的请求
|
||||
func DoRequestToForeignServer(req *proto.OnlineServerReq) (proto.OutlineServerResp, error) {
|
||||
var resp proto.OutlineServerResp
|
||||
resp.Request = *req
|
||||
switch req.Type {
|
||||
case "get":
|
||||
headers := make(map[string]string)
|
||||
for _, v := range req.Header {
|
||||
headers[v.Key] = v.Value
|
||||
}
|
||||
err2, respBytes := worker.DoGetRequest(req.Url, headers)
|
||||
if err2 != nil {
|
||||
log.Println("DoRequestToForeignServer get error:", err2)
|
||||
return resp, err2
|
||||
}
|
||||
resp.Response.Response = string(respBytes)
|
||||
case "post":
|
||||
headers := make(map[string]string)
|
||||
for _, v := range req.Header {
|
||||
headers[v.Key] = v.Value
|
||||
}
|
||||
dataBytes, err := json.Marshal(req.Data)
|
||||
if err != nil {
|
||||
log.Println("DoRequestToForeignServer post error:", err)
|
||||
break
|
||||
}
|
||||
err2, respBytes := worker.DoPostRequestJSON(req.Url, dataBytes, headers)
|
||||
if err2 != nil {
|
||||
log.Println("DoRequestToForeignServer get error:", err2)
|
||||
return resp, err2
|
||||
}
|
||||
resp.Response.Response = string(respBytes)
|
||||
default:
|
||||
log.Println("DoRequestToForeignServer type error:", req.Type)
|
||||
return resp, errors.New("request type error")
|
||||
}
|
||||
return resp, nil
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue