Introduces a new configuration setting `one_time_download_expiry_seconds` to allow administrators to define a default expiration period for one-time downloads. The retention logic in `boxstore` has been updated to use this global expiry value when a box is marked as a one-time download and no specific retention period is defined in the manifest.
86 lines
2.5 KiB
Go
86 lines
2.5 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
const (
|
|
FileStatusFailed = "failed"
|
|
FileStatusReady = "complete"
|
|
FileStatusWait = "pending"
|
|
FileStatusWork = "uploading"
|
|
)
|
|
|
|
const (
|
|
ThumbnailStatusFailed = "failed"
|
|
ThumbnailStatusProcessing = "processing"
|
|
ThumbnailStatusReady = "ready"
|
|
ThumbnailStatusUnsupported = "unsupported"
|
|
)
|
|
|
|
type RetentionOption struct {
|
|
Key string `json:"key"`
|
|
Label string `json:"label"`
|
|
Seconds int64 `json:"seconds"`
|
|
}
|
|
|
|
type BoxFile struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Size int64 `json:"size"`
|
|
SizeLabel string `json:"size_label"`
|
|
MimeType string `json:"mime_type"`
|
|
Status string `json:"status"`
|
|
StatusLabel string `json:"status_label"`
|
|
Title string `json:"title"`
|
|
IconPath string `json:"icon_path"`
|
|
ThumbnailPath *string `json:"thumbnail_path"`
|
|
ThumbnailStatus string `json:"thumbnail_status,omitempty"`
|
|
ThumbnailURL string `json:"-"`
|
|
DownloadPath string `json:"download_path"`
|
|
UploadPath string `json:"upload_path"`
|
|
IsComplete bool `json:"is_complete"`
|
|
}
|
|
|
|
type BoxManifest struct {
|
|
Files []BoxFile `json:"files"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
RetentionKey string `json:"retention_key"`
|
|
RetentionLabel string `json:"retention_label"`
|
|
RetentionSecs int64 `json:"retention_seconds"`
|
|
PasswordSalt string `json:"password_salt,omitempty"`
|
|
PasswordHash string `json:"password_hash,omitempty"`
|
|
PasswordHashAlg string `json:"password_hash_alg,omitempty"`
|
|
AuthToken string `json:"auth_token,omitempty"`
|
|
DisableZip bool `json:"disable_zip,omitempty"`
|
|
OneTimeDownload bool `json:"one_time_download,omitempty"`
|
|
Consumed bool `json:"consumed,omitempty"`
|
|
}
|
|
|
|
type BoxSummary struct {
|
|
ID string
|
|
FileCount int
|
|
TotalSize int64
|
|
TotalSizeLabel string
|
|
CreatedAt time.Time
|
|
ExpiresAt time.Time
|
|
Expired bool
|
|
OneTimeDownload bool
|
|
PasswordProtected bool
|
|
}
|
|
|
|
type CreateBoxRequest struct {
|
|
Files []CreateBoxFileRequest `json:"files"`
|
|
RetentionKey string `json:"retention_key"`
|
|
Password string `json:"password"`
|
|
AllowZip *bool `json:"allow_zip"`
|
|
}
|
|
|
|
type CreateBoxFileRequest struct {
|
|
Name string `json:"name"`
|
|
Size int64 `json:"size"`
|
|
}
|
|
|
|
type UpdateFileStatusRequest struct {
|
|
Status string `json:"status"`
|
|
}
|