123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package utils
- import (
- "encoding/xml"
- "fmt"
- "github.com/charmbracelet/log"
- jsoniter "github.com/json-iterator/go"
- "io"
- "net/http"
- "os"
- "os/exec"
- "path/filepath"
- "runtime"
- "strings"
- "time"
- )
- var myClient = &http.Client{Timeout: 10 * time.Second}
- func GetJson(url string, target interface{}) error {
- log.Info("GetJson", "url", fmt.Sprintf("%s", url))
- r, err := myClient.Get(url)
- if err != nil {
- return err
- }
- defer r.Body.Close()
- var json = jsoniter.ConfigCompatibleWithStandardLibrary
- return json.NewDecoder(r.Body).Decode(target)
- }
- func GetXml(url string, target interface{}) error {
- log.Info("GetXml", "url", fmt.Sprintf("%s", url))
- r, err := myClient.Get(url)
- if err != nil {
- return err
- }
- defer r.Body.Close()
- return xml.NewDecoder(r.Body).Decode(target)
- }
- func DownloadFile(path string, url string) (err error) {
- dir := filepath.Dir(path)
- err = os.MkdirAll(dir, 0644)
- if err != nil {
- return err
- }
- out, err := os.Create(path)
- if err != nil {
- return err
- }
- defer out.Close()
- // Get the data
- resp, err := http.Get(url)
- if err != nil {
- return err
- }
- defer resp.Body.Close()
- // Writer the body to file
- _, err = io.Copy(out, resp.Body)
- if err != nil {
- return err
- }
- return nil
- }
- func IsCommandAvailable(name string) bool {
- command := "ossutil -v"
- var cmd *exec.Cmd
- if runtime.GOOS == "windows" {
- cmd = exec.Command("powershell", command)
- // windows specific code here...
- } else {
- cmd = exec.Command("bash", command)
- }
- if err := cmd.Run(); err != nil {
- return false
- }
- return true
- }
- func DetectSource(path string, dest string, ossUrl string) (url string) {
- saveP := strings.Split(path, "?")[0]
- if strings.Contains(saveP, ossUrl+"720yun_fd_manage/") {
- p := strings.ReplaceAll(saveP, ossUrl+"720yun_fd_manage/", "")
- url = dest + "/" + p
- }
- if strings.Contains(saveP, ossUrl+"scene_edit_data/") {
- p := strings.ReplaceAll(saveP, ossUrl, "")
- url = dest + "/" + p
- }
- if strings.Contains(saveP, ossUrl) {
- p := strings.ReplaceAll(saveP, ossUrl, "/")
- url = dest + "/" + p
- }
- return url
- }
- func EnsureDir(dirName string) error {
- err := os.MkdirAll(dirName, os.ModeDir)
- if err == nil || os.IsExist(err) {
- return nil
- } else {
- return err
- }
- }
|