From 2a4041f16c6588921c87df93927e9076c2cc309d Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 08 六月 2020 18:21:19 +0800
Subject: [PATCH] add sdk download impl

---
 service/SdkDownLoad.go |   81 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 78 insertions(+), 3 deletions(-)

diff --git a/service/SdkDownLoad.go b/service/SdkDownLoad.go
index 699e2ce..f20918e 100644
--- a/service/SdkDownLoad.go
+++ b/service/SdkDownLoad.go
@@ -1,15 +1,18 @@
 package service
 
 import (
+	"basic.com/valib/licence.git"
 	"bytes"
 	"crypto/md5"
 	"encoding/hex"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"io"
 	"io/ioutil"
 	"net/http"
 	"os"
+	"path"
 	"path/filepath"
 	"strings"
 	"webserver/extend/config"
@@ -215,13 +218,17 @@
 	Sdks []Sdk `json:"sdks"`
 }
 
+const (
+	token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8"
+)
+
 func findAllMySdk() map[string]Sdk {
-	token := "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8"
 	url := "http://"+config.ShopConf.Url+"/data/api-s/sdk/findAllMySdk"
-	fmt.Println("token:", token, "url:", url)
+	machineCode := licence.GetMachineCode()
+	fmt.Println("url:", url, "machineCode:", machineCode)
 	paramBody := map[string]interface{} {
 		"serverId": config.Server.AnalyServerId,
-		"machineCode": "",
+		"machineCode": machineCode,
 	}
 	header := map[string]string {
 		"Authorization": token,
@@ -294,3 +301,71 @@
 
 	return nil
 }
+
+type downOrUpResp struct {
+	Url string `json:"url"`
+	md5 string `json:"md5"`
+}
+
+//涓嬭浇鎴栬�呭崌绾х畻娉�
+func DownloadOrUpgrade(sdkId string) (bool,error) {
+	url := "http://"+config.ShopConf.Url+"/data/api-s/sdk/downloadOrUpgrade"
+	machineCode := licence.GetMachineCode()
+	if machineCode == "" {
+		logger.Debug("鑾峰彇鏈哄櫒鐮佸け璐�")
+		return false, errors.New("鑾峰彇鏈哄櫒鐮佸け璐�")
+	}
+ 	paramBody := map[string]interface{}{
+ 		"sdkId": sdkId,
+ 		"machineCode": machineCode,
+	}
+	header := map[string]string {
+		"Authorization": token,
+	}
+	respBody, err := reqUtil.DoPostRequest(url, reqUtil.CONTENT_TYPE_JSON, paramBody, nil, header)
+	if err != nil {
+		logger.Debug("DoPostRequest err:", err)
+		return false, err
+	}
+	var res dbapi.Result
+	if err = json.Unmarshal(respBody, &res); err != nil {
+		logger.Debug("unmarshal err:", err)
+		return false, err
+	}
+	bytes, _ := json.Marshal(res.Data)
+	var resp downOrUpResp
+	if err := json.Unmarshal(bytes, &resp);err != nil {
+		logger.Debug("unmarshal err:", err)
+		return false, err
+	}
+	if resp.Url == "" || resp.md5 == "" {
+		return false, errors.New("鑾峰彇涓嬭浇瀹夎鍖呭け璐�")
+	}
+
+	//2.涓嬭浇瀹夎锛堝崌绾э級鍖咃紝楠岃瘉md5鍚庡畨瑁�
+	configPatchPath := ""
+	if config.Server.PatchPath != "" {
+		configPatchPath = config.Server.PatchPath
+	} else {
+		configPatchPath = "../patch"
+	}
+	if !reqUtil.DirExists(configPatchPath) {
+		os.Mkdir(configPatchPath, 0777)
+	}
+	filenameWithSuffix := path.Base(resp.Url)
+	ext := path.Ext(filenameWithSuffix)
+	downUrl := "http://"+config.ShopConf.Url+"/files/"+resp.Url
+
+	gzFilePath := configPatchPath + "/" + resp.md5+ext
+	err = reqUtil.DownloadFile(gzFilePath, downUrl)
+	if err != nil {
+		logger.Debug("DownloadFile err:", err)
+		return false, err
+	}
+	b, err := installSdk(resp.md5, ext)
+	if b {
+		return true, nil
+	}
+
+	return false, err
+}
\ No newline at end of file

--
Gitblit v1.8.0