Skip to content

Commit 9477700

Browse files
committed
增强 HTTP 和 MySQL 插件的成功响应处理逻辑,新增兼容旧逻辑的响应构造函数;更新相关调用以使用新函数
1 parent 3a4f69f commit 9477700

File tree

3 files changed

+25
-23
lines changed

3 files changed

+25
-23
lines changed

pkg/plugins/http_plugin.go

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -90,37 +90,19 @@ func (p *HTTPPlugin) handleV1(ctx context.Context, df *v1.DFWrap) (*payload.Data
9090
if err != nil {
9191
return payload.NewErrorDataFrameResponse(err), err
9292
}
93-
94-
// resp = &http.Response{
95-
// StatusCode: r.Code,
96-
// Status: http.StatusText(r.Code),
97-
// Proto: "HTTP/1.1",
98-
// ProtoMajor: 1,
99-
// ProtoMinor: 1,
100-
// Header: make(http.Header),
101-
// Body: io.NopCloser(bytes.NewBufferString(bodyStr)),
102-
// }
10393
resp = &v1.HTTPResponse{
10494
StatusCode: r.Code,
10595
Status: http.StatusText(r.Code),
10696
Proto: "HTTP/1.1",
10797
Body: bodyStr,
10898
}
109-
return v1.NewSuccessDataFrameResponse(resp), nil
99+
return v1.NewSuccessDataFrameResponseV1(resp), nil
110100
}
111101
}
112102

113103
// 正常 http 请求
114104
resp, err := v1.HandleHTTPRequest(dataModel.Body.HTTPRequest)
115-
callbackResponse := &CallbackResponse{
116-
Response: resp,
117-
}
118-
if err != nil {
119-
return payload.NewErrorDataFrameResponse(err), err
120-
}
121-
dfResp := payload.NewSuccessDataFrameResponse()
122-
dfResp.SetJson(callbackResponse)
123-
return dfResp, nil
105+
return v1.NewSuccessDataFrameResponseV1(resp), err
124106
}
125107

126108
// v2 仅仅处理HTTP请求,插件在外面已经被路由

pkg/plugins/proxy_mysql_plugin.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ func (p *ProxyMySQLPlugin) HandleMessage(ctx context.Context, df *v1.DFWrap) (*p
3232
if err != nil {
3333
return payload.NewErrorDataFrameResponse(err), err
3434
}
35-
resp := payload.NewSuccessDataFrameResponse()
36-
resp.SetJson(CallbackResponse{Response: res})
37-
return resp, nil
35+
return v1.NewSuccessDataFrameResponseV1(res), nil
3836
}
3937

4038
func (p *ProxyMySQLPlugin) Close() error {

pkg/plugins/v1/wrapper.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,28 @@ func NewSuccessDataFrameResponse(data interface{}) *payload.DataFrameResponse {
180180
return resp
181181
}
182182

183+
// 兼容服务端旧逻辑,只能识别字符串
184+
func NewSuccessDataFrameResponseV1(data interface{}) *payload.DataFrameResponse {
185+
var marshalText string
186+
switch v := data.(type) {
187+
case string:
188+
marshalText = v
189+
default:
190+
marshalTextBytes, err := json.Marshal(data)
191+
if err != nil {
192+
logger.Log1.Errorf("json.Marshal error: %v", err)
193+
return nil
194+
}
195+
marshalText = string(marshalTextBytes)
196+
}
197+
cr := &CallbackResponse{
198+
Response: marshalText,
199+
}
200+
resp := payload.NewSuccessDataFrameResponse()
201+
resp.SetJson(cr)
202+
return resp
203+
}
204+
183205
func GetResponseFromDataFrameResponse(df *payload.DataFrameResponse) (interface{}, error) {
184206
var cr CallbackResponse
185207
if err := json.Unmarshal([]byte(df.Data), &cr); err != nil {

0 commit comments

Comments
 (0)