136 lines
5.8 KiB
Go
136 lines
5.8 KiB
Go
package fileinfo
|
|
|
|
// FileInfo contains the properties of the file.
|
|
// Some properties refer to capabilities in the WOPI client, and capabilities
|
|
// that the WOPI server has.
|
|
//
|
|
// Specific implementations must allow json-encoding of their relevant
|
|
// properties because the object will be marshalled directly
|
|
type FileInfo interface {
|
|
// SetProperties will set the properties of this FileInfo.
|
|
// Keys should match any valid property that the FileInfo implementation
|
|
// has. If a key doesn't match any property, it must be ignored.
|
|
// The values must have its matching type for the target property,
|
|
// otherwise panics might happen.
|
|
//
|
|
// This method should help to reduce the friction of using different
|
|
// implementations with different properties. You can use the same map
|
|
// for all the implementations knowing that the relevant properties for
|
|
// each implementation will be set.
|
|
SetProperties(props map[string]any)
|
|
|
|
// GetTarget will return the target implementation (OnlyOffice, Collabora...).
|
|
// This will help to identify the implementation we're using in an easy way.
|
|
// Note that the returned value must be unique among all the implementations
|
|
GetTarget() string
|
|
}
|
|
|
|
// constants that can be used to refer the fileinfo properties for the
|
|
// SetProperties method of the FileInfo interface
|
|
const (
|
|
KeyBaseFileName = "BaseFileName"
|
|
KeyOwnerID = "OwnerId"
|
|
KeySize = "Size"
|
|
KeyUserID = "UserID"
|
|
KeyVersion = "Version"
|
|
|
|
KeySupportedShareURLTypes = "SupportedShareURLTypes"
|
|
KeySupportsCobalt = "SupportsCobalt"
|
|
KeySupportsContainers = "SupportsContainers"
|
|
KeySupportsDeleteFile = "SupportsDeleteFile"
|
|
KeySupportsEcosystem = "SupportsEcosystem"
|
|
KeySupportsExtendedLockLength = "SupportsExtendedLockLength"
|
|
KeySupportsFolders = "SupportsFolders"
|
|
//KeySupportsGetFileWopiSrc = "SupportsGetFileWopiSrc" // wopivalidator is complaining and the property isn't used for now -> commented
|
|
KeySupportsGetLock = "SupportsGetLock"
|
|
KeySupportsLocks = "SupportsLocks"
|
|
KeySupportsRename = "SupportsRename"
|
|
KeySupportsUpdate = "SupportsUpdate"
|
|
KeySupportsUserInfo = "SupportsUserInfo"
|
|
|
|
KeyIsAnonymousUser = "IsAnonymousUser"
|
|
KeyIsEduUser = "IsEduUser"
|
|
KeyIsAdminUser = "IsAdminUser"
|
|
KeyLicenseCheckForEditIsEnabled = "LicenseCheckForEditIsEnabled"
|
|
KeyUserFriendlyName = "UserFriendlyName"
|
|
KeyUserInfo = "UserInfo"
|
|
|
|
KeyReadOnly = "ReadOnly"
|
|
KeyRestrictedWebViewOnly = "RestrictedWebViewOnly"
|
|
KeyUserCanAttend = "UserCanAttend"
|
|
KeyUserCanNotWriteRelative = "UserCanNotWriteRelative"
|
|
KeyUserCanPresent = "UserCanPresent"
|
|
KeyUserCanRename = "UserCanRename"
|
|
KeyUserCanWrite = "UserCanWrite"
|
|
|
|
KeyCloseURL = "CloseURL"
|
|
KeyDownloadURL = "DownloadURL"
|
|
KeyFileEmbedCommandURL = "FileEmbedCommandURL"
|
|
KeyFileSharingURL = "FileSharingURL"
|
|
KeyFileURL = "FileURL"
|
|
KeyFileVersionURL = "FileVersionURL"
|
|
KeyHostEditURL = "HostEditURL"
|
|
KeyHostEmbeddedViewURL = "HostEmbeddedViewURL"
|
|
KeyHostViewURL = "HostViewURL"
|
|
KeySignoutURL = "SignoutURL"
|
|
|
|
KeyAllowAdditionalMicrosoftServices = "AllowAdditionalMicrosoftServices"
|
|
KeyAllowErrorReportPrompt = "AllowErrorReportPrompt"
|
|
KeyAllowExternalMarketplace = "AllowExternalMarketplace"
|
|
KeyClientThrottlingProtection = "ClientThrottlingProtection"
|
|
KeyCloseButtonClosesWindow = "CloseButtonClosesWindow"
|
|
KeyCopyPasteRestrictions = "CopyPasteRestrictions"
|
|
KeyDisablePrint = "DisablePrint"
|
|
KeyDisableTranslation = "DisableTranslation"
|
|
KeyFileExtension = "FileExtension"
|
|
KeyFileNameMaxLength = "FileNameMaxLength"
|
|
KeyLastModifiedTime = "LastModifiedTime"
|
|
KeyRequestedCallThrottling = "RequestedCallThrottling"
|
|
KeySHA256 = "SHA256"
|
|
KeySharingStatus = "SharingStatus"
|
|
KeyTemporarilyNotWritable = "TemporarilyNotWritable"
|
|
//KeyUniqueContentId = "UniqueContentId" // From microsoft docs: Not supported in CSPP -> commented
|
|
|
|
KeyBreadcrumbBrandName = "BreadcrumbBrandName"
|
|
KeyBreadcrumbBrandURL = "BreadcrumbBrandURL"
|
|
KeyBreadcrumbDocName = "BreadcrumbDocName"
|
|
KeyBreadcrumbFolderName = "BreadcrumbFolderName"
|
|
KeyBreadcrumbFolderURL = "BreadcrumbFolderUrl"
|
|
|
|
// Collabora (non-dupped) properties below
|
|
|
|
KeyPostMessageOrigin = "PostMessageOrigin"
|
|
KeyTemplateSource = "TemplateSource"
|
|
|
|
KeyEnableInsertRemoteImage = "EnableInsertRemoteImage"
|
|
KeyEnableInsertRemoteFile = "EnableInsertRemoteFile"
|
|
KeyEnableRemoteLinkPicker = "EnableRemoteLinkPicker"
|
|
KeyDisableInsertLocalImage = "DisableInsertLocalImage"
|
|
KeyHidePrintOption = "HidePrintOption"
|
|
KeyHideSaveOption = "HideSaveOption"
|
|
KeyHideExportOption = "HideExportOption"
|
|
KeyDisableExport = "DisableExport"
|
|
KeyDisableCopy = "DisableCopy"
|
|
KeyDisableInactiveMessages = "DisableInactiveMessages"
|
|
KeyDownloadAsPostMessage = "DownloadAsPostMessage"
|
|
KeySaveAsPostmessage = "SaveAsPostmessage"
|
|
KeyEnableOwnerTermination = "EnableOwnerTermination"
|
|
KeyUserExtraInfo = "UserExtraInfo"
|
|
//KeyUserPrivateInfo -> requires definition, currently not used
|
|
KeyWatermarkText = "WatermarkText"
|
|
|
|
KeyEnableShare = "EnableShare"
|
|
KeyHideUserList = "HideUserList"
|
|
|
|
// OnlyOffice (non-dupped) properties below
|
|
|
|
KeyClosePostMessage = "ClosePostMessage"
|
|
KeyEditModePostMessage = "EditModePostMessage"
|
|
KeyEditNotificationPostMessage = "EditNotificationPostMessage"
|
|
KeyFileSharingPostMessage = "FileSharingPostMessage"
|
|
KeyFileVersionPostMessage = "FileVersionPostMessage"
|
|
|
|
KeyUserCanReview = "UserCanReview"
|
|
KeySupportsReviewing = "SupportsReviewing"
|
|
)
|