Introduce a `one-time` retention option and persist it on the manifest as `one_time_download`. One-time download boxes bypass retention expiry scheduling, force zip downloads, and reject download attempts until all files are complete to prevent partial retrievals.feat(boxstore): add one-time download retention mode Introduce a `one-time` retention option and persist it on the manifest as `one_time_download`. One-time download boxes bypass retention expiry scheduling, force zip downloads, and reject download attempts until all files are complete to prevent partial retrievals.
72 lines
2.1 KiB
Go
72 lines
2.1 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"`
|
|
AuthToken string `json:"auth_token,omitempty"`
|
|
DisableZip bool `json:"disable_zip,omitempty"`
|
|
OneTimeDownload bool `json:"one_time_download,omitempty"`
|
|
}
|
|
|
|
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"`
|
|
}
|