You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.1 KiB
82 lines
2.1 KiB
package service |
|
|
|
import ( |
|
"fmt" |
|
"go-common/app/admin/main/macross/conf" |
|
"go-common/app/admin/main/macross/model/package" |
|
"go-common/app/admin/main/macross/tools" |
|
"go-common/library/log" |
|
"io" |
|
"mime/multipart" |
|
"os" |
|
"path/filepath" |
|
"strings" |
|
) |
|
|
|
// PackageUpload upload package zip file & unzip it |
|
func (s *Service) PackageUpload(file multipart.File, pkgInfo upload.PkgInfo) (err error) { |
|
err = os.MkdirAll(pkgInfo.SaveDir, 0755) |
|
if err != nil { |
|
log.Error("os.MkdirAll error(%v)", err) |
|
return |
|
} |
|
|
|
destFilePath := filepath.Join(pkgInfo.SaveDir, pkgInfo.FileName) |
|
destFile, err := os.Create(destFilePath) |
|
if err != nil { |
|
log.Error("os.Create(%s) error(%v)", destFilePath, err) |
|
return |
|
} |
|
io.Copy(destFile, file) |
|
|
|
err = tools.Unzip(destFilePath, pkgInfo.SaveDir) |
|
if err != nil { |
|
log.Error("unzip(%s, %s) error(%v)", destFilePath, pkgInfo.SaveDir, err) |
|
return |
|
} |
|
|
|
err = os.Remove(destFilePath) |
|
if err != nil { |
|
log.Error("os.Remove(%s) error(%v)", destFilePath, err) |
|
return |
|
} |
|
|
|
// generate Android channel package |
|
if pkgInfo.ClientType == "android" { |
|
if len(pkgInfo.Channel) > 0 && len(pkgInfo.ApkName) > 0 { |
|
dest := filepath.Join(pkgInfo.SaveDir, "channel") |
|
targetFilePath := filepath.Join(pkgInfo.SaveDir, pkgInfo.ApkName) |
|
_, err = tools.GenerateChannelApk(dest, pkgInfo.Channel, nil, targetFilePath, false, false) |
|
if err != nil { |
|
log.Error("tools.GenerateChannelApk(%s, %s, nil, %s, false, false) error(%v)", dest, pkgInfo.Channel, targetFilePath, err) |
|
os.RemoveAll(pkgInfo.SaveDir) |
|
return |
|
} |
|
} |
|
} |
|
|
|
return |
|
} |
|
|
|
// PackageList list the Package Files |
|
func (s *Service) PackageList(path string) (fileList []string, err error) { |
|
err = filepath.Walk(path, func(path string, f os.FileInfo, err error) error { |
|
if err != nil { |
|
log.Error("filepath.Walk error(%v)", err) |
|
return err |
|
} |
|
if f == nil { |
|
errMsg := "found no file" |
|
err = fmt.Errorf(errMsg) |
|
log.Error(errMsg) |
|
return err |
|
} |
|
if f.IsDir() { |
|
return nil |
|
} |
|
fileURL := strings.Replace(path, conf.Conf.Property.Package.SavePath, conf.Conf.Property.Package.URLPrefix, -1) |
|
fileList = append(fileList, fileURL) |
|
return err |
|
}) |
|
return |
|
}
|
|
|