1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00
go-cqhttp/internal/selfupdate/update_windows.go
wdvxdr 883fca089d
style: move global/update to internal/selfupdate
also move checkUpdate to internal/selfupdate
2021-09-25 10:58:54 +08:00

42 lines
725 B
Go

package selfupdate
import (
"archive/zip"
"bytes"
"crypto/sha256"
"errors"
"fmt"
"io"
"net/http"
)
// update go-cqhttp自我更新
func update(url string, sum []byte) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
wc := writeSumCounter{
hash: sha256.New(),
}
rsp, err := io.ReadAll(io.TeeReader(resp.Body, &wc))
if err != nil {
return err
}
if !bytes.Equal(wc.hash.Sum(nil), sum) {
return errors.New("文件已损坏")
}
reader, _ := zip.NewReader(bytes.NewReader(rsp), resp.ContentLength)
file, err := reader.Open("go-cqhttp.exe")
if err != nil {
return err
}
err, _ = fromStream(file)
fmt.Println()
if err != nil {
return err
}
return nil
}