From c00d00630ebfcc0d13e60e222981bc2fd4ef48af Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 27 Jun 2018 15:42:44 +0800 Subject: [PATCH] - use Request.Body directly when handling jd msg. --- platformapi/jdapi/callback.go | 17 ++++++++--------- platformapi/jdapi/jdapi_test.go | 14 +++----------- utils/utils.go | 9 ++------- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/platformapi/jdapi/callback.go b/platformapi/jdapi/callback.go index 80990c02..a16e4bf3 100644 --- a/platformapi/jdapi/callback.go +++ b/platformapi/jdapi/callback.go @@ -2,7 +2,6 @@ package jdapi import ( "fmt" - "net/http" "net/url" "git.rosy.net.cn/baseapi" @@ -78,8 +77,8 @@ func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *Call return nil } -func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) { - result, err := utils.HTTPRequest2Values(request, needDecode) +func (a *API) getCommonOrderCallbackMsg(data []byte, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) { + result, err := utils.HTTPBody2Values(data, needDecode) if err != nil { return FormatErrorResponse } @@ -95,20 +94,20 @@ func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{}, return nil } -func (a *API) GetOrderCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) { +func (a *API) GetOrderCallbackMsg(data []byte) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) { msg = new(CallbackOrderMsg) - callbackResponse = a.getCommonOrderCallbackMsg(request, msg, false) + callbackResponse = a.getCommonOrderCallbackMsg(data, msg, false) return msg, callbackResponse } -func (a *API) GetOrderApplyCancelCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) { +func (a *API) GetOrderApplyCancelCallbackMsg(data []byte) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) { msg = new(CallbackOrderMsg) - callbackResponse = a.getCommonOrderCallbackMsg(request, msg, true) + callbackResponse = a.getCommonOrderCallbackMsg(data, msg, true) return msg, callbackResponse } -func (a *API) GetOrderDeliveryCallbackMsg(request *http.Request) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) { +func (a *API) GetOrderDeliveryCallbackMsg(data []byte) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) { msg = new(CallbackDeliveryStatusMsg) - callbackResponse = a.getCommonOrderCallbackMsg(request, msg, true) + callbackResponse = a.getCommonOrderCallbackMsg(data, msg, true) return msg, callbackResponse } diff --git a/platformapi/jdapi/jdapi_test.go b/platformapi/jdapi/jdapi_test.go index b6f6f02e..dbe4e0ff 100644 --- a/platformapi/jdapi/jdapi_test.go +++ b/platformapi/jdapi/jdapi_test.go @@ -2,8 +2,6 @@ package jdapi import ( "net/http" - "net/http/httptest" - "strings" "testing" "git.rosy.net.cn/baseapi" @@ -122,9 +120,7 @@ func TestOrderQuery(t *testing.T) { func TestGetOrderCallbackMsg(t *testing.T) { callbackStr := "timestamp=2018-06-27+12%3A43%3A51&sign=84096ADFAB81E224D6231269AD1F6AAB&v=1.0&jd_param_json=%7B%22billId%22%3A%22815338526000221%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222018-06-27+12%3A42%3A34%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json" - request := httptest.NewRequest("POST", "http://test.jxc4.com", strings.NewReader(callbackStr)) - request.Header.Set("Content-Type", "application/x-www-form-urlencoded") - result, resp := jdapi.GetOrderCallbackMsg(request) + result, resp := jdapi.GetOrderCallbackMsg([]byte(callbackStr)) if resp != nil { t.Fatal(resp) @@ -134,9 +130,7 @@ func TestGetOrderCallbackMsg(t *testing.T) { func TestGetOrderDeliveryCallbackMsg(t *testing.T) { callbackStr := "timestamp=2018-06-27%2B09%253A08%253A41&sign=54D9A8515BB5650DC3B81366E3286570&v=1.0&jd_param_json=%257B%2522createPin%2522%253A%2522JD_21134dac1c251d2%2522%252C%2522deliveryCarrierName%2522%253A%2522%25E8%25BE%25BE%25E8%25BE%25BE%25E4%25B8%2593%25E9%2580%2581%2522%252C%2522deliveryCarrierNo%2522%253A%25229966%2522%252C%2522deliveryStatus%2522%253A%252210%2522%252C%2522deliveryStatusTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522inputTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522orderId%2522%253A%2522815324888000121%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json" - request := httptest.NewRequest("POST", "http://test.jxc4.com", strings.NewReader(callbackStr)) - request.Header.Set("Content-Type", "application/x-www-form-urlencoded") - result, resp := jdapi.GetOrderDeliveryCallbackMsg(request) + result, resp := jdapi.GetOrderDeliveryCallbackMsg([]byte(callbackStr)) if resp != nil { t.Fatal(resp) @@ -146,9 +140,7 @@ func TestGetOrderDeliveryCallbackMsg(t *testing.T) { func TestGetOrderApplyCancelCallbackMsg(t *testing.T) { callbackStr := "timestamp=2018-06-27%2B13%253A35%253A29&sign=F1398D658514D8864FFB56F5EF2C4792&v=1.0&jd_param_json=%257B%2522billId%2522%253A%2522815339944000322%2522%252C%2522remark%2522%253A%2522%25E5%2595%2586%25E5%25AE%25B6%25E7%25BC%25BA%25E8%25B4%25A7%2522%252C%2522statusId%2522%253A%252220030%2522%252C%2522timestamp%2522%253A%25222018-06-27%2B13%253A35%253A24%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json" - request := httptest.NewRequest("POST", "http://test.jxc4.com", strings.NewReader(callbackStr)) - request.Header.Set("Content-Type", "application/x-www-form-urlencoded") - result, resp := jdapi.GetOrderApplyCancelCallbackMsg(request) + result, resp := jdapi.GetOrderApplyCancelCallbackMsg([]byte(callbackStr)) if resp != nil { t.Fatal(resp) diff --git a/utils/utils.go b/utils/utils.go index 65edb9dc..6114a1a7 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -181,13 +181,8 @@ func HTTPResponse2Json(response *http.Response) (map[string]interface{}, error) return jsonResult, nil } -func HTTPRequest2Values(request *http.Request, needDecode bool) (url.Values, error) { - bodyData, err := ioutil.ReadAll(request.Body) - if err != nil { - baseapi.SugarLogger.Errorf("ioutil.ReadAll error:%v", err) - return nil, err - } - bodyStr := string(bodyData) +func HTTPBody2Values(data []byte, needDecode bool) (url.Values, error) { + bodyStr := string(data) if needDecode { bodyStr1, err := url.QueryUnescape(bodyStr) if err != nil {