|
|
package main
import ( "time"
"github.com/dustin/go-humanize" )
var defaultExpiryList = []uint64{ 60, 300, 3600, 86400, 604800, 2419200, 31536000, }
type ExpirationTime struct { Seconds uint64 Human string }
var neverExpire = time.Unix(0, 0)
// Determine if a file with expiry set to "ts" has expired yet
func isTsExpired(ts time.Time) bool { now := time.Now() return ts != neverExpire && now.After(ts) }
// Determine if the given filename is expired
func isFileExpired(filename string) (bool, error) { metadata, err := metadataRead(filename) if err != nil { return false, err }
return isTsExpired(metadata.Expiry), nil }
// Return a list of expiration times and their humanized versions
func listExpirationTimes() []ExpirationTime { epoch := time.Now() actualExpiryInList := false var expiryList []ExpirationTime
for _, expiry := range defaultExpiryList { if Config.maxExpiry == 0 || expiry <= Config.maxExpiry { if expiry == Config.maxExpiry { actualExpiryInList = true }
duration := time.Duration(expiry) * time.Second expiryList = append(expiryList, ExpirationTime{ expiry, humanize.RelTime(epoch, epoch.Add(duration), "", ""), }) } }
if Config.maxExpiry == 0 { expiryList = append(expiryList, ExpirationTime{ 0, "never", }) } else if actualExpiryInList == false { duration := time.Duration(Config.maxExpiry) * time.Second expiryList = append(expiryList, ExpirationTime{ Config.maxExpiry, humanize.RelTime(epoch, epoch.Add(duration), "", ""), }) }
return expiryList }
|