Documentation ¶
Index ¶
- Constants
- Variables
- func ClientIP(r *http.Request) string
- func CopyDir(src, dst string) error
- func CopyFile(src, dst string) error
- func CopyWithCtx(ctx context.Context, out io.Writer, in io.Reader, size int64, ...) error
- func CreateNestedDirectory(path string) error
- func CreateNestedFile(path string) (*os.File, error)
- func CreateTempFile(r io.Reader, size int64) (*os.File, error)
- func EncodePath(path string, all ...bool) string
- func Exists(name string) bool
- func Ext(path string) string
- func FixAndCleanPath(path string) string
- func GetActualMountPath(mountPath string) string
- func GetFileType(filename string) int
- func GetFullPath(mountPath, path string) string
- func GetMD5EncodeStr(data string) string
- func GetMimeType(name string) string
- func GetNoneEmpty(strArr ...string) string
- func GetObjType(filename string, isDir bool) int
- func HashData(hashType *HashType, data []byte, params ...any) string
- func HashFile(hashType *HashType, file io.ReadSeeker, params ...any) (string, error)
- func HashReader(hashType *HashType, reader io.Reader, params ...any) (string, error)
- func InjectQuery(raw string, query url.Values) (string, error)
- func IsBalance(str string) bool
- func IsBool(bs ...bool) bool
- func IsCanceled(ctx context.Context) bool
- func IsEmailFormat(email string) bool
- func IsLocalIP(ip net.IP) bool
- func IsLocalIPAddr(ip string) bool
- func IsSubPath(path string, subPath string) bool
- func JoinBasePath(basePath, reqPath string) (string, error)
- func LimitWriter(w io.Writer, limit int64) io.Writer
- func MappingName(name string) string
- func Max[T constraints.Ordered](a, b T) T
- func MergeErrors(errs ...error) error
- func MergeMap(mObj ...map[string]interface{}) map[string]interface{}
- func Min[T constraints.Ordered](a, b T) T
- func MustParseCNTime(str string) time.Time
- func MustSliceConvert[S any, D any](srcS []S, convert func(src S) D) []D
- func NewDebounce(interval time.Duration) func(f func())
- func NewDebounce2(interval time.Duration, f func()) func()
- func NewLimitReadCloser(reader io.Reader, close CloseFunc, limit int64) io.ReadCloser
- func NewReadCloser(reader io.Reader, close CloseFunc) io.ReadCloser
- func PathAddSeparatorSuffix(path string) string
- func PathEqual(path1, path2 string) bool
- func Retry(attempts int, sleep time.Duration, f func() error) (err error)
- func SafeAtob(data string) (string, error)
- func SliceAllContains[T comparable](arr []T, vs ...T) bool
- func SliceContains[T comparable](arr []T, v T) bool
- func SliceConvert[S any, D any](srcS []S, convert func(src S) (D, error)) ([]D, error)
- func SliceEqual[T comparable](a, b []T) bool
- func SliceFilter[T any](arr []T, filter func(src T) bool) []T
- func SliceMeet[T1, T2 any](arr []T1, v T2, meet func(item T1, v T2) bool) bool
- func SliceReplace[T any](arr []T, replace func(src T) T)
- func SymlinkOrCopyFile(src, dst string) error
- func WriteJsonToFile(dst string, data interface{}, std ...bool) bool
- type CloseFunc
- type Closers
- type ClosersIF
- type HashInfo
- type HashType
- type MultiHasher
- type MultiReadable
- type ReadCloser
Constants ¶
const ( KB = 1 << (10 * (iota + 1)) MB GB TB )
Variables ¶
var ( // MD5 indicates MD5 support MD5 = RegisterHash("md5", "MD5", 32, md5.New) // SHA1 indicates SHA-1 support SHA1 = RegisterHash("sha1", "SHA-1", 40, sha1.New) // SHA256 indicates SHA-256 support SHA256 = RegisterHash("sha256", "SHA-256", 64, sha256.New) )
var CNLoc = time.FixedZone("UTC", 8*60*60)
var DEC = map[string]string{
"-": "+",
"_": "/",
".": "=",
}
var ErrUnsupported = errors.New("hash type not supported")
ErrUnsupported should be returned by filesystem, if it is requested to deliver an unsupported hash type.
var Json = json.ConfigCompatibleWithStandardLibrary
var Log = log.New()
var (
Supported []*HashType
)
Functions ¶
func CopyWithCtx ¶
func CopyWithCtx(ctx context.Context, out io.Writer, in io.Reader, size int64, progress func(percentage float64)) error
CopyWithCtx slightly modified function signature: - context has been added in order to propagate cancellation - I do not return the number of bytes written, has it is not useful in my use case
func CreateNestedDirectory ¶ added in v3.11.0
CreateNestedDirectory create nested directory
func CreateNestedFile ¶
CreateNestedFile create nested file
func CreateTempFile ¶
CreateTempFile create temp file from io.ReadCloser, and seek to 0
func EncodePath ¶
func FixAndCleanPath ¶ added in v3.7.1
FixAndCleanPath The upper layer of the root directory is still the root directory. So ".." And "." will be cleared for example 1. ".." or "." => "/" 2. "../..." or "./..." => "/..." 3. "../.x." or "./.x." => "/.x." 4. "x//\\y" = > "/z/x"
func GetActualMountPath ¶ added in v3.7.1
GetActualMountPath remove balance suffix
func GetFullPath ¶ added in v3.9.0
func GetMD5EncodeStr ¶ added in v3.22.0
func GetMimeType ¶ added in v3.2.0
func GetNoneEmpty ¶ added in v3.27.0
GetNoneEmpty returns the first non-empty string, return empty if all empty
func GetObjType ¶ added in v3.6.0
func HashReader ¶ added in v3.27.0
HashReader get hash of one hashType from a reader
func IsCanceled ¶
func IsEmailFormat ¶ added in v3.4.0
func IsLocalIPAddr ¶
func JoinBasePath ¶ added in v3.6.0
func MappingName ¶ added in v3.5.1
func Max ¶ added in v3.27.0
func Max[T constraints.Ordered](a, b T) T
func MergeErrors ¶ added in v3.7.1
func Min ¶ added in v3.27.0
func Min[T constraints.Ordered](a, b T) T
func MustParseCNTime ¶ added in v3.4.0
func MustSliceConvert ¶ added in v3.6.0
func NewDebounce ¶ added in v3.9.0
func NewDebounce2 ¶ added in v3.9.0
func NewLimitReadCloser ¶ added in v3.12.0
func NewReadCloser ¶ added in v3.12.0
func NewReadCloser(reader io.Reader, close CloseFunc) io.ReadCloser
func PathAddSeparatorSuffix ¶ added in v3.7.1
PathAddSeparatorSuffix Add path '/' suffix for example /root => /root/
func SliceAllContains ¶ added in v3.31.0
func SliceAllContains[T comparable](arr []T, vs ...T) bool
SliceAllContains check if slice all contains elements
func SliceContains ¶
func SliceContains[T comparable](arr []T, v T) bool
SliceContains check if slice contains element
func SliceConvert ¶
SliceConvert convert slice to another type slice
func SliceEqual ¶
func SliceEqual[T comparable](a, b []T) bool
SliceEqual check if two slices are equal
func SliceFilter ¶ added in v3.26.0
func SliceReplace ¶ added in v3.31.0
func SliceReplace[T any](arr []T, replace func(src T) T)
func SymlinkOrCopyFile ¶ added in v3.11.0
SymlinkOrCopyFile symlinks a file or copy if symlink failed
func WriteJsonToFile ¶
WriteJsonToFile write struct to json file
Types ¶
type Closers ¶ added in v3.25.0
type Closers struct {
// contains filtered or unexported fields
}
func EmptyClosers ¶ added in v3.27.0
func EmptyClosers() Closers
func NewClosers ¶ added in v3.25.0
func (*Closers) AddClosers ¶ added in v3.27.0
func (*Closers) GetClosers ¶ added in v3.27.0
type HashInfo ¶ added in v3.27.0
type HashInfo struct {
// contains filtered or unexported fields
}
A HashInfo contains hash string for one or more hashType
func FromString ¶ added in v3.27.0
func NewHashInfo ¶ added in v3.27.0
func NewHashInfoByMap ¶ added in v3.29.0
type HashType ¶ added in v3.27.0
HashType indicates a standard hashing algorithm
func RegisterHash ¶ added in v3.27.0
RegisterHash adds a new Hash to the list and returns its Type
func RegisterHashWithParam ¶ added in v3.28.0
func (*HashType) MarshalJSON ¶ added in v3.27.0
func (*HashType) MarshalText ¶ added in v3.27.0
type MultiHasher ¶ added in v3.27.0
type MultiHasher struct {
// contains filtered or unexported fields
}
A MultiHasher will construct various hashes on all incoming writes.
func NewMultiHasher ¶ added in v3.27.0
func NewMultiHasher(types []*HashType) *MultiHasher
NewMultiHasher will return a hash writer that will write the requested hash types.
func (*MultiHasher) GetHashInfo ¶ added in v3.27.0
func (m *MultiHasher) GetHashInfo() *HashInfo
func (*MultiHasher) Size ¶ added in v3.27.0
func (m *MultiHasher) Size() int64
Size returns the number of bytes written
type MultiReadable ¶ added in v3.15.1
type MultiReadable struct {
// contains filtered or unexported fields
}
func NewMultiReadable ¶ added in v3.15.1
func NewMultiReadable(reader io.Reader) *MultiReadable
func (*MultiReadable) Close ¶ added in v3.15.1
func (mr *MultiReadable) Close() error
func (*MultiReadable) Reset ¶ added in v3.15.1
func (mr *MultiReadable) Reset() error