소스 검색

:bug: Fix NPE https://ld246.com/article/1716477105045

Daniel 1 년 전
부모
커밋
59af2466ce
1개의 변경된 파일30개의 추가작업 그리고 5개의 파일을 삭제
  1. 30 5
      kernel/model/cloud_service.go

+ 30 - 5
kernel/model/cloud_service.go

@@ -105,7 +105,7 @@ func StartFreeTrial() (err error) {
 
 
 	requestResult := gulu.Ret.NewResult()
 	requestResult := gulu.Ret.NewResult()
 	request := httpclient.NewCloudRequest30s()
 	request := httpclient.NewCloudRequest30s()
-	_, err = request.
+	resp, err := request.
 		SetSuccessResult(requestResult).
 		SetSuccessResult(requestResult).
 		SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
 		SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
 		Post(util.GetCloudServer() + "/apis/siyuan/user/startFreeTrial")
 		Post(util.GetCloudServer() + "/apis/siyuan/user/startFreeTrial")
@@ -113,6 +113,10 @@ func StartFreeTrial() (err error) {
 		logging.LogErrorf("start free trial failed: %s", err)
 		logging.LogErrorf("start free trial failed: %s", err)
 		return ErrFailedToConnectCloudServer
 		return ErrFailedToConnectCloudServer
 	}
 	}
+	if http.StatusOK != resp.StatusCode {
+		logging.LogErrorf("start free trial failed: %d", resp.StatusCode)
+		return ErrFailedToConnectCloudServer
+	}
 	if 0 != requestResult.Code {
 	if 0 != requestResult.Code {
 		return errors.New(requestResult.Msg)
 		return errors.New(requestResult.Msg)
 	}
 	}
@@ -530,7 +534,7 @@ var errInvalidUser = errors.New("invalid user")
 func getUser(token string) (*conf.User, error) {
 func getUser(token string) (*conf.User, error) {
 	result := map[string]interface{}{}
 	result := map[string]interface{}{}
 	request := httpclient.NewCloudRequest30s()
 	request := httpclient.NewCloudRequest30s()
-	_, err := request.
+	resp, err := request.
 		SetSuccessResult(&result).
 		SetSuccessResult(&result).
 		SetBody(map[string]string{"token": token}).
 		SetBody(map[string]string{"token": token}).
 		Post(util.GetCloudServer() + "/apis/siyuan/user")
 		Post(util.GetCloudServer() + "/apis/siyuan/user")
@@ -538,6 +542,10 @@ func getUser(token string) (*conf.User, error) {
 		logging.LogErrorf("get community user failed: %s", err)
 		logging.LogErrorf("get community user failed: %s", err)
 		return nil, errors.New(Conf.Language(18))
 		return nil, errors.New(Conf.Language(18))
 	}
 	}
+	if http.StatusOK != resp.StatusCode {
+		logging.LogErrorf("get community user failed: %d", resp.StatusCode)
+		return nil, errors.New(Conf.Language(18))
+	}
 
 
 	code := result["code"].(float64)
 	code := result["code"].(float64)
 	if 0 != code {
 	if 0 != code {
@@ -563,7 +571,7 @@ func UseActivationcode(code string) (err error) {
 	code = gulu.Str.RemoveInvisible(code)
 	code = gulu.Str.RemoveInvisible(code)
 	requestResult := gulu.Ret.NewResult()
 	requestResult := gulu.Ret.NewResult()
 	request := httpclient.NewCloudRequest30s()
 	request := httpclient.NewCloudRequest30s()
-	_, err = request.
+	resp, err := request.
 		SetSuccessResult(requestResult).
 		SetSuccessResult(requestResult).
 		SetBody(map[string]string{"data": code}).
 		SetBody(map[string]string{"data": code}).
 		SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
 		SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
@@ -572,6 +580,10 @@ func UseActivationcode(code string) (err error) {
 		logging.LogErrorf("check activation code failed: %s", err)
 		logging.LogErrorf("check activation code failed: %s", err)
 		return ErrFailedToConnectCloudServer
 		return ErrFailedToConnectCloudServer
 	}
 	}
+	if http.StatusOK != resp.StatusCode {
+		logging.LogErrorf("check activation code failed: %d", resp.StatusCode)
+		return ErrFailedToConnectCloudServer
+	}
 	if 0 != requestResult.Code {
 	if 0 != requestResult.Code {
 		return errors.New(requestResult.Msg)
 		return errors.New(requestResult.Msg)
 	}
 	}
@@ -584,7 +596,7 @@ func CheckActivationcode(code string) (retCode int, msg string) {
 	retCode = 1
 	retCode = 1
 	requestResult := gulu.Ret.NewResult()
 	requestResult := gulu.Ret.NewResult()
 	request := httpclient.NewCloudRequest30s()
 	request := httpclient.NewCloudRequest30s()
-	_, err := request.
+	resp, err := request.
 		SetSuccessResult(requestResult).
 		SetSuccessResult(requestResult).
 		SetBody(map[string]string{"data": code}).
 		SetBody(map[string]string{"data": code}).
 		SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
 		SetCookies(&http.Cookie{Name: "symphony", Value: Conf.GetUser().UserToken}).
@@ -594,6 +606,11 @@ func CheckActivationcode(code string) (retCode int, msg string) {
 		msg = ErrFailedToConnectCloudServer.Error()
 		msg = ErrFailedToConnectCloudServer.Error()
 		return
 		return
 	}
 	}
+	if http.StatusOK != resp.StatusCode {
+		logging.LogErrorf("check activation code failed: %d", resp.StatusCode)
+		msg = ErrFailedToConnectCloudServer.Error()
+		return
+	}
 	if 0 == requestResult.Code {
 	if 0 == requestResult.Code {
 		retCode = 0
 		retCode = 0
 	}
 	}
@@ -608,7 +625,7 @@ func Login(userName, password, captcha string, cloudRegion int) (ret *gulu.Resul
 
 
 	result := map[string]interface{}{}
 	result := map[string]interface{}{}
 	request := httpclient.NewCloudRequest30s()
 	request := httpclient.NewCloudRequest30s()
-	_, err := request.
+	resp, err := request.
 		SetSuccessResult(&result).
 		SetSuccessResult(&result).
 		SetBody(map[string]string{"userName": userName, "userPassword": password, "captcha": captcha}).
 		SetBody(map[string]string{"userName": userName, "userPassword": password, "captcha": captcha}).
 		Post(util.GetCloudServer() + "/apis/siyuan/login")
 		Post(util.GetCloudServer() + "/apis/siyuan/login")
@@ -619,6 +636,14 @@ func Login(userName, password, captcha string, cloudRegion int) (ret *gulu.Resul
 		ret.Msg = Conf.Language(18) + ": " + err.Error()
 		ret.Msg = Conf.Language(18) + ": " + err.Error()
 		return
 		return
 	}
 	}
+	if http.StatusOK != resp.StatusCode {
+		logging.LogErrorf("login failed: %d", resp.StatusCode)
+		ret = gulu.Ret.NewResult()
+		ret.Code = -1
+		ret.Msg = Conf.Language(18)
+		return
+	}
+
 	ret = &gulu.Result{
 	ret = &gulu.Result{
 		Code: int(result["code"].(float64)),
 		Code: int(result["code"].(float64)),
 		Msg:  result["msg"].(string),
 		Msg:  result["msg"].(string),