This is an automated email from the ASF dual-hosted git repository. kumfo pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-answer-plugins.git
commit a860ecdbd384d9e80019e64e1c2c85cd2797e90f Author: kumfo <[email protected]> AuthorDate: Fri Jul 19 15:44:03 2024 +0800 fix(cdn): aliyun oss cdn add sync status check --- cdn-aliyunoss/aliyunoss.go | 84 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 19 deletions(-) diff --git a/cdn-aliyunoss/aliyunoss.go b/cdn-aliyunoss/aliyunoss.go index a7ffcf2..150d11c 100644 --- a/cdn-aliyunoss/aliyunoss.go +++ b/cdn-aliyunoss/aliyunoss.go @@ -45,6 +45,8 @@ const ( defaultMaxFileSize int64 = 10 * 1024 * 1024 ) +var enable = false + type CDN struct { Config *CDNConfig } @@ -99,31 +101,49 @@ func (c *CDN) Info() plugin.Info { // GetStaticPrefix get static prefix func (c *CDN) GetStaticPrefix() string { + if !enable { + return "" + } return c.Config.VisitUrlPrefix + c.Config.ObjectKeyPrefix } // scanFiles scan all the static files in the build directory func (c *CDN) scanFiles() { if staticPath == "" { - c.scanEmbedFiles("build") - log.Info("complete scan embed files") + err := c.scanEmbedFiles("build") + if err != nil { + log.Error("failed: scan embed files") + return + } + log.Info("complete: scan embed files") + enable = true + } + err := c.scanStaticPathFiles(staticPath) + if err != nil { + log.Info("fialed: scan static path files") return } - c.scanStaticPathFiles(staticPath) - log.Info("complete scan static path files") + enable = true + log.Info("complete: scan static path files") } // scanStaticPathFiles scan static path files -func (c *CDN) scanStaticPathFiles(fileName string) { +func (c *CDN) scanStaticPathFiles(fileName string) (err error) { + if len(fileName) == 0 { + return + } // scan static path files entry, err := os.ReadDir(fileName) if err != nil { - log.Error("read static dir failed: %v", err) + log.Error("read static dir failed: ", err, fileName) return } for _, info := range entry { if info.IsDir() { - c.scanStaticPathFiles(filepath.Join(fileName, info.Name())) + err = c.scanStaticPathFiles(filepath.Join(fileName, info.Name())) + if err != nil { + return + } continue } @@ -133,7 +153,7 @@ func (c *CDN) scanStaticPathFiles(fileName string) { file, err := os.Open(filePath) if err != nil { log.Error("open file failed: %v", err) - continue + return err } suffix := staticPath[:1] @@ -145,34 +165,49 @@ func (c *CDN) scanStaticPathFiles(fileName string) { // rebuild custom io.Reader ns := strings.Split(info.Name(), ".") if info.Name() == "asset-manifest.json" { - c.Upload(filePath, c.rebuildReader(file, map[string]string{ + err = c.Upload(filePath, c.rebuildReader(file, map[string]string{ "\"/static": "", }), size) + if err != nil { + return err + } continue } if ns[0] == "main" { ext := strings.ToLower(filepath.Ext(filePath)) if ext == ".js" || ext == ".map" { - c.Upload(filePath, c.rebuildReader(file, map[string]string{ + err = c.Upload(filePath, c.rebuildReader(file, map[string]string{ "\"static": "", "=\"/\",": "=\"\",", }), size) + + if err != nil { + return err + } continue } if ext == ".css" { - c.Upload(filePath, c.rebuildReader(file, map[string]string{ + err = c.Upload(filePath, c.rebuildReader(file, map[string]string{ "url(/static": "url(../../static", }), size) + + if err != nil { + return err + } continue } } - c.Upload(filePath, file, size) + err = c.Upload(filePath, file, size) + if err != nil { + return err + } } + return nil } -func (c *CDN) scanEmbedFiles(fileName string) { +func (c *CDN) scanEmbedFiles(fileName string) (err error) { entry, err := ui.Build.ReadDir(fileName) if err != nil { log.Error("read static dir failed: %v", err) @@ -180,7 +215,7 @@ func (c *CDN) scanEmbedFiles(fileName string) { } for _, info := range entry { if info.IsDir() { - c.scanEmbedFiles(filepath.Join(fileName, info.Name())) + err = c.scanEmbedFiles(filepath.Join(fileName, info.Name())) continue } @@ -191,7 +226,7 @@ func (c *CDN) scanEmbedFiles(fileName string) { defer file.Close() if err != nil { log.Error("open file failed: %v", err) - continue + return err } filePath = strings.TrimPrefix(filePath, "build/") @@ -199,31 +234,41 @@ func (c *CDN) scanEmbedFiles(fileName string) { // rebuild custom io.Reader ns := strings.Split(info.Name(), ".") if info.Name() == "asset-manifest.json" { - c.Upload(filePath, c.rebuildReader(file, map[string]string{ + err = c.Upload(filePath, c.rebuildReader(file, map[string]string{ "\"/static": "", }), size) + if err != nil { + return err + } continue } if ns[0] == "main" { ext := strings.ToLower(filepath.Ext(filePath)) if ext == ".js" || ext == ".map" { - c.Upload(filePath, c.rebuildReader(file, map[string]string{ + err = c.Upload(filePath, c.rebuildReader(file, map[string]string{ "\"static": "", "=\"/\",": "=\"\",", }), size) + if err != nil { + return err + } continue } if ext == ".css" { - c.Upload(filePath, c.rebuildReader(file, map[string]string{ + err = c.Upload(filePath, c.rebuildReader(file, map[string]string{ "url(/static": "url(../../static", }), size) + if err != nil { + return err + } continue } } c.Upload(filePath, file, size) } + return nil } func (c *CDN) rebuildReader(file io.Reader, replaceMap map[string]string) io.Reader { @@ -254,7 +299,7 @@ func (c *CDN) rebuildReader(file io.Reader, replaceMap map[string]string) io.Rea return strings.NewReader(res) } -func (c *CDN) Upload(filePath string, file io.Reader, size int64) { +func (c *CDN) Upload(filePath string, file io.Reader, size int64) (err error) { client, err := oss.New(c.Config.Endpoint, c.Config.AccessKeyID, c.Config.AccessKeySecret) if err != nil { log.Error(plugin.MakeTranslator(i18n.ErrMisStorageConfig), err) @@ -287,6 +332,7 @@ func (c *CDN) Upload(filePath string, file io.Reader, size int64) { return } defer respBody.Close() + return nil } func (c *CDN) createObjectKey(filePath string) string {
