package reporter

import (
	"crypto/md5"
	"encoding/hex"
	"io"
	"os"
)

// 判断字符串是否为十进制数字
func IsDecimal(s string) bool {
	for _, ch := range s {
		if ch < '0' || ch > '9' {
			return false
		}
	}
	return s != "" // 不允许空字符串
}

// 计算文件MD5, 失败返回错误
func FileMD5(path string) (string, error) {
	f, err := os.Open(path)
	if err != nil {
		return "", err
	}
	defer f.Close()

	h := md5.New()
	if _, err := io.Copy(h, f); err != nil {
		return "", err
	}
	return hex.EncodeToString(h.Sum(nil)), nil
}

// 判断指定路径的文件是否存在
func FileExists(name string) bool {
	_, err := os.Stat(name)
	return !os.IsNotExist(err)
}
