file_type.go 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. package api
  2. // File represents an encrypted file in the system
  3. type File struct {
  4. ID int64 `json:"id"`
  5. OwnerID int64 `json:"ownerID"`
  6. CollectionID int64 `json:"collectionID"`
  7. CollectionOwnerID *int64 `json:"collectionOwnerID"`
  8. EncryptedKey string `json:"encryptedKey"`
  9. KeyDecryptionNonce string `json:"keyDecryptionNonce"`
  10. File FileAttributes `json:"file" binding:"required"`
  11. Thumbnail FileAttributes `json:"thumbnail" binding:"required"`
  12. Metadata FileAttributes `json:"metadata" binding:"required"`
  13. IsDeleted bool `json:"isDeleted"`
  14. UpdationTime int64 `json:"updationTime"`
  15. MagicMetadata *MagicMetadata `json:"magicMetadata,omitempty"`
  16. PubicMagicMetadata *MagicMetadata `json:"pubMagicMetadata,omitempty"`
  17. Info *FileInfo `json:"info,omitempty"`
  18. }
  19. // FileInfo has information about storage used by the file & it's metadata(future)
  20. type FileInfo struct {
  21. FileSize int64 `json:"fileSize,omitempty"`
  22. ThumbnailSize int64 `json:"thumbSize,omitempty"`
  23. }
  24. // FileAttributes represents a file item
  25. type FileAttributes struct {
  26. EncryptedData string `json:"encryptedData,omitempty"`
  27. DecryptionHeader string `json:"decryptionHeader" binding:"required"`
  28. }