findAllSdk add installed flag, add 5s timeout
| | |
| | | // @Produce json |
| | | // @Tags 算法 |
| | | // @Param sdkName query string false "可选参数" |
| | | // @Param installed query bool true "查已安装或者查所有" |
| | | // @Success 200 {string} json "{"code":200, msg:"请求处理成功",data:"算法列表",success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"请求失败",data:"[]",success:false}" |
| | | // @Router /data/api-v/sdk/findAllSdk [GET] |
| | | func (sc SdkController) FindAllSdk(c *gin.Context) { |
| | | sdkName := c.Query("sdkName") |
| | | installed, _ := strconv.ParseBool(c.Query("installed")) |
| | | logger.Debug("FindAllSdk sdkName:", sdkName) |
| | | |
| | | sdks := service.GetSdkList("") //本机已安装的算法 |
| | | sdks := service.GetSdkList("", installed) //本机已安装的算法 |
| | | |
| | | util.ResponseFormat(c, code.Success, sdks) |
| | | } |
| | |
| | | "os" |
| | | "strings" |
| | | "github.com/dustin/go-humanize" |
| | | "time" |
| | | ) |
| | | |
| | | const ( |
| | |
| | | request.Header.Add(key, val) |
| | | } |
| | | } |
| | | client := &http.Client{} |
| | | client := &http.Client{ |
| | | Timeout: time.Second * 5, |
| | | } |
| | | resp, err := client.Do(request) |
| | | if err != nil { |
| | | return resultBytes, err |
| | |
| | | } |
| | | } |
| | | |
| | | func GetSdkList(sdkName string) []SdkInsOrUpgrade { |
| | | //installedFlag 如果是true,表示只查本地的,不需要比对查看未安装的算法 |
| | | func GetSdkList(sdkName string, installedFlag bool) []SdkInsOrUpgrade { |
| | | var api dbapi.SdkApi |
| | | localSdks := api.FindAll(sdkName) //本地已安装所有算法,带顺序 |
| | | if localSdks == nil { |
| | |
| | | installedSdks[idx] = siou |
| | | } |
| | | |
| | | //远端可用的算法 |
| | | remoteSdks := findAllMySdk() |
| | | logger.Debug("remoteSdks:", remoteSdks) |
| | | |
| | | nInsSdks := make([]SdkInsOrUpgrade,0) |
| | | for _,sdk := range remoteSdks { |
| | | if v,ok := localSdkM[sdk.Id];ok { //本地已安装 |
| | | ls := v |
| | | if shouldVersionBeUpgrade(ls.Version, sdk.Version) { //判断版本号是否需要升级 |
| | | ls.Installed = true |
| | | ls.IsUpgrade = true //需要升级 |
| | | ls.RemoteVersion = sdk.Version //远端的版本号 |
| | | } |
| | | localSdkM[sdk.Id] = ls |
| | | for index,es := range installedSdks { |
| | | if es.Id == sdk.Id { |
| | | installedSdks[index] = ls |
| | | break |
| | | if !installedFlag { |
| | | //远端可用的算法 |
| | | remoteSdks := findAllMySdk() |
| | | logger.Debug("remoteSdks:", remoteSdks) |
| | | |
| | | for _,sdk := range remoteSdks { |
| | | if v,ok := localSdkM[sdk.Id];ok { //本地已安装 |
| | | ls := v |
| | | if shouldVersionBeUpgrade(ls.Version, sdk.Version) { //判断版本号是否需要升级 |
| | | ls.Installed = true |
| | | ls.IsUpgrade = true //需要升级 |
| | | ls.RemoteVersion = sdk.Version //远端的版本号 |
| | | } |
| | | localSdkM[sdk.Id] = ls |
| | | for index,es := range installedSdks { |
| | | if es.Id == sdk.Id { |
| | | installedSdks[index] = ls |
| | | break |
| | | } |
| | | } |
| | | } else { //本地未安装,需要安装 |
| | | bIns := SdkInsOrUpgrade{ |
| | | RemoteVersion: sdk.Version, |
| | | IsUpgrade: false, |
| | | Installed: false, |
| | | } |
| | | bIns.Sdk = sdk |
| | | nInsSdks = append(nInsSdks, bIns) |
| | | } |
| | | } else { //本地未安装,需要安装 |
| | | bIns := SdkInsOrUpgrade{ |
| | | RemoteVersion: sdk.Version, |
| | | IsUpgrade: false, |
| | | Installed: false, |
| | | } |
| | | bIns.Sdk = sdk |
| | | nInsSdks = append(nInsSdks, bIns) |
| | | } |
| | | } |
| | | |