refactor(code): Cleaned-up the code base
This commit is contained in:
74
lib/boxstore/summary.go
Normal file
74
lib/boxstore/summary.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package boxstore
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sort"
|
||||
|
||||
"warpbox/lib/helpers"
|
||||
"warpbox/lib/models"
|
||||
)
|
||||
|
||||
func ListBoxSummaries() ([]models.BoxSummary, error) {
|
||||
entries, err := os.ReadDir(uploadRoot)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
summaries := make([]models.BoxSummary, 0, len(entries))
|
||||
for _, entry := range entries {
|
||||
if !entry.IsDir() || !ValidBoxID(entry.Name()) {
|
||||
continue
|
||||
}
|
||||
|
||||
summary, err := BoxSummary(entry.Name())
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
summaries = append(summaries, summary)
|
||||
}
|
||||
|
||||
sort.Slice(summaries, func(i int, j int) bool {
|
||||
return summaries[i].CreatedAt.After(summaries[j].CreatedAt)
|
||||
})
|
||||
return summaries, nil
|
||||
}
|
||||
|
||||
func BoxSummary(boxID string) (models.BoxSummary, error) {
|
||||
files, err := ListFiles(boxID)
|
||||
if err != nil {
|
||||
return models.BoxSummary{}, err
|
||||
}
|
||||
|
||||
var manifest models.BoxManifest
|
||||
hasManifest := false
|
||||
if readManifest, err := ReadManifest(boxID); err == nil {
|
||||
manifest = readManifest
|
||||
hasManifest = true
|
||||
}
|
||||
|
||||
totalSize := int64(0)
|
||||
for _, file := range files {
|
||||
totalSize += file.Size
|
||||
}
|
||||
|
||||
summary := models.BoxSummary{
|
||||
ID: boxID,
|
||||
FileCount: len(files),
|
||||
TotalSize: totalSize,
|
||||
TotalSizeLabel: helpers.FormatBytes(totalSize),
|
||||
}
|
||||
if hasManifest {
|
||||
summary.CreatedAt = manifest.CreatedAt
|
||||
summary.ExpiresAt = manifest.ExpiresAt
|
||||
summary.Expired = IsExpired(manifest)
|
||||
summary.OneTimeDownload = manifest.OneTimeDownload
|
||||
summary.PasswordProtected = IsPasswordProtected(manifest)
|
||||
} else if info, err := os.Stat(BoxPath(boxID)); err == nil {
|
||||
summary.CreatedAt = info.ModTime().UTC()
|
||||
}
|
||||
|
||||
return summary, nil
|
||||
}
|
||||
Reference in New Issue
Block a user