Skip to content

Commit

Permalink
Optimize static resource download logic
Browse files Browse the repository at this point in the history
  • Loading branch information
thun888 committed Dec 3, 2023
1 parent 16a4649 commit 7ef096d
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 10 deletions.
5 changes: 5 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
### 2023/12/03
`M` 优化静态资源下载逻辑
### 2023/11/17
`A` 增加upnp显示
`M` 优化
### 2023/10/06
`A`支持历史数据统计

Expand Down
58 changes: 48 additions & 10 deletions modules/download/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package download

import (
"archive/zip"
"encoding/json"
"fmt"
"io"
"net/http"
Expand All @@ -25,23 +26,60 @@ func DownloadStatic(basedirectory string, force bool) error {
_, err := os.Stat(directory)
if os.IsNotExist(err) || force {
logrus.Info("正从'Mirouterui/static'下载静态资源")
resp, err := http.Get("http://mrui-api.hzchu.top/downloadstatic")
checkErr(err)
defer resp.Body.Close()
downloadfile(directory)
return nil
}

out, err := os.CreateTemp("", "*.zip")
checkErr(err)
defer out.Close()
// 读取/static/version/index.html
f, err := os.Open(filepath.Join(directory, "version", "index.html"))
if err != nil {
logrus.Info("无法读取静态资源版本号,重新下载")
os.RemoveAll(directory)
downloadfile(directory)
return err
}

_, err = io.Copy(out, resp.Body)
checkErr(err)
defer f.Close()
forntendVersion, err := io.ReadAll(f)
checkErr(err)
logrus.Info("静态资源已存在,版本号为" + string(forntendVersion))

err = unzip(out.Name(), directory)
checkErr(err)
resp, err := http.Get("https://mrui-api.hzchu.top/checkupdate")
if err != nil {
logrus.Info("无法获取更新信息,重新下载")
os.RemoveAll(directory)
downloadfile(directory)
return err
}

defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
checkErr(err)
var result map[string]interface{}
json.Unmarshal(body, &result)

if result["frontversion"] != string(forntendVersion) {
logrus.Info("发现新版本,重新下载")
os.RemoveAll(directory)
downloadfile(directory)
}
return nil
}
func downloadfile(directory string) {
resp, err := http.Get("http://mrui-api.hzchu.top/downloadstatic")
checkErr(err)
defer resp.Body.Close()

out, err := os.CreateTemp("", "*.zip")
checkErr(err)
defer out.Close()

_, err = io.Copy(out, resp.Body)
checkErr(err)

err = unzip(out.Name(), directory)
checkErr(err)
}

func unzip(src, dest string) error {
r, err := zip.OpenReader(src)
Expand Down

0 comments on commit 7ef096d

Please sign in to comment.