76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
package utils
|
|
|
|
import (
|
|
"net/url"
|
|
"os"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// DoesFileExist returns true, if a file exists (and actually is a file)
|
|
func DoesFileExist(p string) bool {
|
|
s, err := os.Stat(p)
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
|
|
if s.IsDir() {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// DoesFolderExist returns true, if a folder exists (and actually is a folder)
|
|
func DoesFolderExist(p string) bool {
|
|
s, err := os.Stat(p)
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
|
|
if !s.IsDir() {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// DoesStringContainsNonWhitelistedSubstrings returns false if s contains substrings which are not in whitelist
|
|
func DoesStringContainsNonWhitelistedSubstrings(s string, whitelist map[string]string) bool {
|
|
for _, char := range s {
|
|
_, charIsWhitelisted := whitelist[string(char)]
|
|
if !charIsWhitelisted {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// IsStringInSliceOfStrings returns true, if slice contains target
|
|
func IsStringInSliceOfStrings(slice []string, target string) bool {
|
|
for _, v := range slice {
|
|
if v == target {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// IsValidURL returns true, if s is a valid URL
|
|
func IsValidURL(s string) bool {
|
|
u, err := url.Parse(s)
|
|
if err != nil || u.Scheme == "" || u.Host == "" {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// IsValidUUID returns true, if s is a valid UUID
|
|
func IsValidUUID(s string) bool {
|
|
_, err := uuid.Parse(s)
|
|
return err == nil
|
|
}
|