mirror of
https://github.com/putyy/res-downloader.git
synced 2026-01-12 14:14:55 +08:00
103 lines
2.0 KiB
Go
103 lines
2.0 KiB
Go
package shared
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"errors"
|
|
"fmt"
|
|
"golang.org/x/net/publicsuffix"
|
|
"net/url"
|
|
"os"
|
|
"os/exec"
|
|
sysRuntime "runtime"
|
|
"time"
|
|
)
|
|
|
|
func Md5(data string) string {
|
|
hashNew := md5.New()
|
|
hashNew.Write([]byte(data))
|
|
hash := hashNew.Sum(nil)
|
|
return hex.EncodeToString(hash)
|
|
}
|
|
|
|
func FormatSize(size float64) string {
|
|
if size > 1048576 {
|
|
return fmt.Sprintf("%.2fMB", float64(size)/1048576)
|
|
}
|
|
if size > 1024 {
|
|
return fmt.Sprintf("%.2fKB", float64(size)/1024)
|
|
}
|
|
return fmt.Sprintf("%.0fb", size)
|
|
}
|
|
|
|
func GetTopLevelDomain(rawURL string) string {
|
|
u, err := url.Parse(rawURL)
|
|
if err == nil && u.Host != "" {
|
|
rawURL = u.Host
|
|
}
|
|
domain, err := publicsuffix.EffectiveTLDPlusOne(rawURL)
|
|
if err != nil {
|
|
return rawURL
|
|
}
|
|
return domain
|
|
}
|
|
|
|
func FileExist(file string) bool {
|
|
info, err := os.Stat(file)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return !info.IsDir()
|
|
}
|
|
|
|
func CreateDirIfNotExist(dir string) error {
|
|
if _, err := os.Stat(dir); os.IsNotExist(err) {
|
|
return os.MkdirAll(dir, 0750)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func IsDevelopment() bool {
|
|
return os.Getenv("APP_ENV") == "development"
|
|
}
|
|
|
|
func GetCurrentDateTimeFormatted() string {
|
|
now := time.Now()
|
|
return fmt.Sprintf("%04d%02d%02d%02d%02d%02d",
|
|
now.Year(),
|
|
now.Month(),
|
|
now.Day(),
|
|
now.Hour(),
|
|
now.Minute(),
|
|
now.Second())
|
|
}
|
|
|
|
func OpenFolder(filePath string) error {
|
|
var cmd *exec.Cmd
|
|
|
|
switch sysRuntime.GOOS {
|
|
case "darwin":
|
|
cmd = exec.Command("open", "-R", filePath)
|
|
case "windows":
|
|
cmd = exec.Command("explorer", "/select,", filePath)
|
|
case "linux":
|
|
cmd = exec.Command("nautilus", filePath)
|
|
if err := cmd.Start(); err != nil {
|
|
cmd = exec.Command("thunar", filePath)
|
|
if err := cmd.Start(); err != nil {
|
|
cmd = exec.Command("dolphin", filePath)
|
|
if err := cmd.Start(); err != nil {
|
|
cmd = exec.Command("pcmanfm", filePath)
|
|
if err := cmd.Start(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
default:
|
|
return errors.New("unsupported platform")
|
|
}
|
|
|
|
return cmd.Start()
|
|
}
|