74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/andreimarcu/linx-server/expiry"
|
|
"github.com/dustin/go-humanize"
|
|
)
|
|
|
|
var defaultExpiryList = []uint64{
|
|
60,
|
|
300,
|
|
3600,
|
|
7200,
|
|
14400,
|
|
28800,
|
|
43200,
|
|
86400,
|
|
604800,
|
|
2419200,
|
|
31536000,
|
|
}
|
|
|
|
type ExpirationTime struct {
|
|
Seconds uint64
|
|
Human string
|
|
}
|
|
|
|
// Determine if the given filename is expired
|
|
func isFileExpired(filename string) (bool, error) {
|
|
metadata, err := storageBackend.Head(filename)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
return expiry.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 _, expiryEntry := range defaultExpiryList {
|
|
if Config.maxExpiry == 0 || expiryEntry <= Config.maxExpiry {
|
|
if expiryEntry == Config.maxExpiry {
|
|
actualExpiryInList = true
|
|
}
|
|
|
|
duration := time.Duration(expiryEntry) * time.Second
|
|
expiryList = append(expiryList, ExpirationTime{
|
|
Seconds: expiryEntry,
|
|
Human: 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
|
|
}
|