2020-05-31 14:42:41 +02:00
|
|
|
package fs
|
2020-02-01 10:29:44 +01:00
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// NonCanonical returns true if the file basename is not canonical.
|
|
|
|
func NonCanonical(basename string) bool {
|
2020-02-01 20:52:28 +01:00
|
|
|
if len(basename) != 24 {
|
2020-02-01 10:29:44 +01:00
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
if strings.Count(basename, "_") != 2 {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
if strings.ContainsAny(basename, "-~!@#$%^&*()+=<>?,.") {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
2020-02-01 20:52:28 +01:00
|
|
|
// CanonicalName returns a canonical name based on time and CRC32 checksum.
|
|
|
|
func CanonicalName(date time.Time, checksum string) string {
|
|
|
|
if len(checksum) != 8 {
|
|
|
|
checksum = "ERROR000"
|
2020-02-01 10:29:44 +01:00
|
|
|
} else {
|
2020-02-01 20:52:28 +01:00
|
|
|
checksum = strings.ToUpper(checksum)
|
2020-02-01 10:29:44 +01:00
|
|
|
}
|
|
|
|
|
2020-02-01 20:52:28 +01:00
|
|
|
return date.Format("20060102_150405_") + checksum
|
2020-02-01 10:29:44 +01:00
|
|
|
}
|